cs插件吧 关注:8,234贴子:88,332
  • 8回复贴,共1

Orpheu: global_set / 中文地图名

只看楼主收藏回复


大概会产生这种效果(实际上任何地图文件名不可能是*.*.bsp)
本帖告诉你如何通过修改gpGlobals(就是global_get处理的那个)来达成这种效果
当然,你也可以通过resocket之类的模块来修改服务器查询包内容实现与本帖内容无关


IP属地:广东1楼2017-08-14 20:52回复
    首先下载orpheu模块:
    https://forums.alliedmods.net/showthread.php?t=299492
    然后下载本帖需要的signature包:
    http://pan.baidu.com/s/1jIFt8qy
    然后在这里找到那个插件进行编译:
    http://paste.ubuntu.com/25312133/


    IP属地:广东3楼2017-08-14 20:56
    回复
      首先需要找到gpGlobals结构体指针,
      这里使用mp.dll里面的GiveFnptrsToDll函数(这个函数是导出函数所以不需要特征码)
      在CS16ND里面看到这个函数是这样子的

      打开IDA Pro可以很容易的找到这个函数(export)

      于是我们就可以直接写gpGlobal = mp.dll + 0x16BA34,当然这只在我的3266有效果了。
      所以我们可以换一种方法,通过GiveFnprtsToDll + 24取值得到16BA34,再对这个地址取值即可得到gpGlobals(实测3266,6153,7561全部有效)


      IP属地:广东4楼2017-08-14 21:01
      回复
        然后事情就好办了,把offset写到config/orpheu/memory那个文件里面去(文件已经包含)
        由于这个glb_mapname实际上是int类型,就是AllocString返回的那种字符串id,咱就通过这种方法设置。
        OrpheuMemorySetAtAddress(gpGlobals, "glb_mapname", 1, engfunc(EngFunc_AllocString, "*.*"));
        当然不是字符串的就不需要AllocString了
        【get_gametime()的返回值】
        OrpheuMemorySetAtAddress(gpGlobals, "glb_time", 1, 0.0);
        【get_maxplayers的返回值】
        OrpheuMemorySetAtAddress(gpGlobals, "glb_maxClients", 1, 0);
        * 注意,实测并不可以通过这种方法改变玩家数量,会出现意想不到的效果请谨慎尝试。


        IP属地:广东5楼2017-08-14 21:06
        回复
          orp大法好


          IP属地:广东来自Android客户端7楼2017-08-14 23:24
          回复
            我要好玩的


            IP属地:广东来自iPhone客户端8楼2017-08-15 07:27
            回复


              IP属地:广东来自Android客户端9楼2017-08-15 20:15
              回复
                老哥可以加你QQ吗?可以的话给我私信


                12楼2021-11-02 11:43
                回复