qq11001 发表于 7 天前

天龙八部新源端纯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


如有问题,请反馈留言在下方:

176034095 发表于 6 天前

谢谢分享

aa1101 发表于 6 天前

66666666膜拜大佬

qq982530549 发表于 6 天前

小白膜拜大佬

sundnf55 发表于 6 天前

:::

122333000 发表于 6 天前

看不懂但是大受震撼

ccsky 发表于 6 天前

小白膜拜大佬

176034095 发表于 6 天前

牛逼的大佬

liyicheng556 发表于 6 天前

多谢分享哦,不错不错

qq982530549 发表于 6 天前

大佬能不能分享个这个头饰背饰的源端单机出来玩玩,么么哒

qq11001 发表于 5 天前

更新了一个 Login崩溃的问题ky ti

AKA1 发表于 5 天前

感觉很厉害的样子,膜拜一下:

_____________嗝 发表于 4 天前

感谢大佬的无私奉献

qq11001 发表于 4 天前

回复:
为什么启动第一个 shm   提示 # ./ShareMemory: error while loading shared libraries: libmysqlclient.so.21: cannot open shared object file: No such file or directory

答: 以前研究mysql的函数的时候调用,后面取消了,现在V0.8已经取消这个文件支持.不会再报错了.

qq11001 发表于 4 天前

完整的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


你看这是啥 发表于 4 天前

感谢大佬

dj7930382 发表于 4 天前

这个可以下载了自己玩单机吗

6356001 发表于 4 天前

可以发一下服务端和客户端嘛

oming 发表于 3 天前

这里也能碰到舞老板

userado 发表于 3 天前

感谢雪舞大佬分享
页: [1]
查看完整版本: 天龙八部新源端纯64位 武道三(动态库函数)重载函数 V0.9

本站内容如若侵犯到您的权益,请来电来函告知,我们会尽快处理!
联系QQ:1953150286,2251387361,123784736,免责申明