天龙八部新源端纯64位 武道三(动态库函数)重载函数 V0.9
本帖最后由 qq11001 于 2025-12-15 13:24 编辑大家好,我是雪舞,很久很久没逛这个网站了,发个自己做的小动态库.
本动态库随缘更新
适用版本: 新源端《武道三背饰头饰》 64位服务端 64位的客户端 专用SO
内容说明:
本动态库主要用于便捷调试与开发测试。
包含功能:
[*]Hook时间到没拉闸之前(目前没找到拉闸点位,无法彻底根除拉闸,这只能临时办法)
[*]LuaFnRefreshScript(sceneId,selfId,002032):用于重载Lua脚本,实现Lua脚本内容的即时生效。
[*]LuaFnReloadDropTables(sceneId,selfId):用于重载爆率,掉落怪物表和掉落包裹表。
[*]LuaFnReloadShopTables(sceneId,selfId):用于重载元宝商店,ShopTable.txt和ShopSceneLimiti.txt。
[*]LuaFnGetAccountName(sceneId,selfId):用于获取角色账号。
插件下载:V0.1~V0.8
1.新增重载函数LuaFnRefreshScript
2.时间Hook为拉闸之前 Login World shm Server均已Hook
3.新增重载爆率表LuaFnReloadDropTables
4.新增重载元宝商店函数LuaFnReloadShopTables
5.新增LuaFnGetAccountName(sceneId,selfId)
6.近战打怪不会自动停止动作的问题
7.新增血量角色属性MDEX结算 测试版 有空再更新其他的属性MDEX结算8.防止卡Lgoin掉Login进程崩溃问题
MDEX全局变量:
--MDEX属性引擎读取位
SYS_MAX_HP = 200 --血上限
设置方法,设置加角色50000血:SetMissionDataEx(sceneId, selfId, SYS_MAX_HP,50000 )
V0.9 2025-14-15 整合包(下载我即可,包含所有了!)1.修正缺少libmysqlclient.so.21的问题
启动命令参考:
shm启动命令:
cd /home/tlbb/Server
./shm stop
cd /home/tlbb/Server
./shm start
World启动命令
cd /home/tlbb/Server/
unset LD_PRELOAD
export LD_PRELOAD="/home/tlbb/Server/libNewWorld.so"
./World
Login启动命令
cd /home/tlbb/Server/
unset LD_PRELOAD
export LD_PRELOAD="/home/tlbb/Server/libNewLogin.so"
./Login
Server启动命令
unset LD_PRELOAD
export LD_PRELOAD="/home/tlbb/Server/libNewServer.so"
export ASAN_OPTIONS=halt_on_error=0:abort_on_error=0:log_path='/home/tlbb/Server/assert_core.log'
cd /home/tlbb/Server/
./Server
存档服务启动命令:
cd /home/tlbb/Server
./CenterServershm 加载so的方法,需要修改文件:\home\tlbb\Server\shm:
#start or stop ShareMemory
#!/bin/sh
# Usage: shm start stop clear disp
userage()
{
echo "Usage: ./shm start|stop|clear|disp"
}
clrsm()
{
_sharemem=`ps -A | grep ShareMemory | awk '{print $4}'`
if test "$_sharemem" == "ShareMemory"; then
echo "ShareMemory already run, stop it first!"
else
ipcs > /tmp/tmp$$
if test -e /tmp/tmp$$
then
_runflag=0
while read _line
do
if test "$_line" == "" ; then
continue
fi
_run=`echo $_line | grep "Shared Memory Segments"`
if test "$_run" != "" ; then
_runflag=1
continue
fi
_run=`echo $_line | grep "Semaphore Arrays"`
if test "$_run" != "" ; then
break
fi
_tag=`echo $_line | grep "^0x" | awk '{print $5}'`
if test "$_tag" == "" ; then
continue
fi
if test "$_tag" == "404" ; then
continue
fi
_tag=`echo $_line | awk '{print $2}'`
./smtool $_tag
done < /tmp/tmp$$
return 0
else
echo "can't create /tmp/tmp$$, please retry!"
fi
fi
return 1
}
start()
{
_sharemem=`ps -A | grep ShareMemory | awk '{print $4}'`
if test "$_sharemem" == "ShareMemory"; then
echo "ShareMemory already run, start faild!"
else
echo 1024000000 > /proc/sys/kernel/shmmax
unset LD_PRELOAD
export LD_PRELOAD="/home/tlbb/Server/libNewShareMemory.so"
./ShareMemory&
unset LD_PRELOAD
return 0
fi
return 1
}
stop()
{
_sharemem=`ps -A | grep ShareMemory | awk '{print $1}'`
if test "$_sharemem" == ""; then
echo "ShareMemory not run, stop ok!"
return 0
else
kill -9 $_sharemem
return 0
fi
return 1
}
disp()
{
_sharemem=`ps -A | grep ShareMemory | awk '{print $4}'`
if test "$_sharemem" == "ShareMemory"; then
echo "ShareMemory run ok!!"
echo ""
ipcs
else
echo "ShareMemory not run!"
return 1
fi
return 0
}
if test $# != 1
then
userage
exit 1
fi
case $1 in
start)
clrsm
start
if test $? == 0 ; then
echo "start ShareMemory ok! pls wait for it run in loop()..."
else
echo "some error occ when start ShareMemory, please retry!"
fi
;;
stop)
stop
if test $? == 0 ; then
echo "stop shm ok!"
else
echo "some error occ when stop shm, please retry!"
fi
;;
clear)
clrsm
if test $? == 0 ; then
echo "clear shm ok!"
else
echo "some error occ when clear shm, please retry!"
fi
;;
disp)
disp
;;
*)
userage
exit 1
;;
esac
如有问题,请反馈留言在下方:
谢谢分享 66666666膜拜大佬 小白膜拜大佬 ::: 看不懂但是大受震撼 小白膜拜大佬 牛逼的大佬 多谢分享哦,不错不错 大佬能不能分享个这个头饰背饰的源端单机出来玩玩,么么哒 更新了一个 Login崩溃的问题ky ti 感觉很厉害的样子,膜拜一下: 感谢大佬的无私奉献 回复:
为什么启动第一个 shm 提示 # ./ShareMemory: error while loading shared libraries: libmysqlclient.so.21: cannot open shared object file: No such file or directory
答: 以前研究mysql的函数的时候调用,后面取消了,现在V0.8已经取消这个文件支持.不会再报错了. 完整的run.sh启动命令
ulimit -n 65535
if ps aux | grep -i "./ShareMemory" | grep -v grep > /dev/null 2>&1;then
echo " ShareMemoryis running !!!!!!"
else
###### start ShareMemory ######
cd /home/tlbb/Server/
./shm clear > /dev/null 2>&1
rm -rf exit.cmd quitserver.cmd
./shm start > /dev/null 2>&1
echo " start ShareMemory ......"
sleep 5
echo " ShareMemory started completely !!!!!!"
###### start World ######
cd /home/tlbb/Server/
unset LD_PRELOAD
export LD_PRELOAD="/home/tlbb/Server/libNewWorld.so"
./World > /dev/null 2>&1 &
world_pid=$!# 保存进程ID
unset LD_PRELOAD
echo " start World ......"
sleep 10
if ps -p $world_pid >/dev/null; then
echo " World started completely !!!!!! (PID: $world_pid)"
else
echo " World started fail !!!!!!"
fi
###### start Server ######
unset LD_PRELOAD
export LD_PRELOAD="/home/tlbb/Server/libNewServer.so"
##内存异常捕获配置 -loadscriptonce
export ASAN_OPTIONS=halt_on_error=0:abort_on_error=0:log_path='/home/tlbb/Server/assert_core.log'
# 是否热更新 -loadscriptonce
cd /home/tlbb/Server/
./Server -loadscriptonce > /dev/null 2>&1 &
server_pid=$!
echo " start Server ......"
unset LD_PRELOAD
sleep 15
if ps -p $server_pid >/dev/null; then
echo " Server started completely !!!!!! (PID: $server_pid)"
else
echo " Server started fail !!!!!!"
fi
###### start Login ######
unset LD_PRELOAD
export LD_PRELOAD="/home/tlbb/Server/libNewLogin.so"
./Login > /dev/null 2>&1 &
login_pid=$!
unset LD_PRELOAD
echo " start Login ......"
sleep 1
if ps -p $login_pid >/dev/null; then
echo " Login started completely !!!!!! (PID: $login_pid)"
else
echo " Login started fail !!!!!!"
fi
exit
fi
感谢大佬 这个可以下载了自己玩单机吗 可以发一下服务端和客户端嘛 这里也能碰到舞老板 感谢雪舞大佬分享
页:
[1]