gta自由之城吧 关注:27,401贴子:793,096

回复:178的雪松林别墅改造日志

只看楼主收藏回复

有没有考虑过修复垃圾车目标刷新范围呢?


IP属地:天津来自Android客户端110楼2020-07-16 11:59
收起回复
    顶顶,加油!


    IP属地:天津来自Android客户端111楼2020-07-16 11:59
    回复
      曾经别墅J点的蓝圈位于房顶上,我修改回房内。
      此外发现一个问题,就是游戏中同时存在的蓝圈是有限的。蓝圈过多会导致其他的一些蓝圈不显示。
      我之前做了好几个传送点,包括DL传媒大楼,雪松林别墅,赌场顶部花园。当我再把米奇藏身处的传送点设置后,做任务时蓝圈都消失了。
      同样的,夺取利昂别墅后,刷出四个任务点,由于我加的蓝圈过多,会导致任务蓝圈不显示(不影响接任务)
      我在考虑要不要只留下雪松林别墅传送点,其他所有传送点都删掉,以保证游戏接任务体验。另外兜帽帮任务点不显示的问题我不知道如何解决,至少我觉得跟蓝圈过多的关系不大。不过不影响接任务,那就算了


      IP属地:海南112楼2020-07-17 00:28
      收起回复
        这么久了你还在搞ufw,这是我没想到的,加油


        IP属地:福建来自iPhone客户端113楼2020-07-17 04:51
        回复
          看到你还在研究游戏。我觉得您很有耐心。
          粗略的在看了一下帖子。。
          对于您的几个问题我有一些详解。
          关于创建sphere的问题
          “sphere”顾名思义是一个球体,实际上可能是没有碰撞的球体,并且球体是一个半透明不可见圆柱形。它仅仅用来作为一个视觉上的标记。
          在GTA3是蓝色,GTAVC是粉色,GTASA是红色。
          在CLEO/SCM(gta3sc)脚本中,它通常使用03BC创建。
          03bc=5,%5d% = create_sphere %1d% %2d% %3d% %4d%
          共5个参数
          第五个参数是创建sphere的返回句柄。
          第一二三是创建在世界坐标xyz参数
          第四个参数是创建sphere的直径大小。
          在创建后球体的中心是在地面上,创建的球体坐标无法放在空中漂浮(会掉落),直径设定的越大,球体就越大。
          另外一个OP 02A7也可以创建sphere,区别于在于02A7创建的拥有雷达地图icon和marker箭头标记。
          02a7=5,%5d% = create_icon_marker_and_sphere %4d% at %1d% %2d% %3d%
          这两个OP创建的sphere是同时占用内存的,也就是说两类sphere其实是一类的。
          关于数量限制,请看楼下:


          IP属地:湖南来自Android客户端114楼2020-07-17 09:37
          回复
            关于你的核心问题。
            创建过多的shpere会导致一些球体视觉上的消失。
            首先我们得清楚shpere的结构,它属于CShpere类。
            在这类中的结构体如下图
            一个CShpere结构体共拥有0x18个大小的字节。
            其中这个0x18的字节存取了该球体的一些信息
            Struct
            1.inuse代表该球体是否被使用,值1和0分别代表两种。
            2._pad似乎是一种所谓的是否已经被激活的状态(也就是说玩家站在蓝圈的时候)
            3.handle是球体的句柄保存。
            4.ID是球体被载入在内存上的ID。最先被创建的球体最先载入内存,从0开始编号。依次123……
            5.RwSphere代表一个数组结构(也就是二图的信息)
            它包括3D坐标XYZ的信息,和直径信息。
            通过以上说明,我们知道游戏的球体一旦被创建就会被载入内存上。然后被分配ID从0开始,最先创建的球体为编号0(编号0-15)这个分配的内存必然是有大小限制的。
            而一个CShpere结构体拥有0x18字节的大小(相当于创建一个球体就占用0x18字节)
            而CShpere的内存总共被分配为0x180的大小。
            所以0x180/0x18=0x10(0x10是16进制 它的10进制是16)
            所以游戏最大能够创建的球体数量为16个,如果创建超过这个数量,比如编号15的球体为最后一块内存,创建第17个球体时,内存空间不够,不会出现所谓的第16号ID的球体,而是覆盖0号ID的球体。所以超过数量后,会导致游戏原来的一些球体在视觉上的消失。因为被覆盖了。
            而main已经创建了很多任务剧情需要的触发任务的球体,而你又用cleo脚本创建自己的瞬移脚本,使用球体视觉标记。导致了载入内存的数量上限。
            所以当你不需要使用该球体时,例如您的瞬移cleo可以多加一个判断,当玩家靠近球体坐标某个范围时,在去创建球体(即使上限,也因为是最后创建的,不会导致自己创建的消失。)
            当您不需要这个球体时,例如玩家走远了,就使用03bd=1,destroy_sphere %1d%
            03BD删除该球体 03BD实际上是把结构体中inUser的值改成0,也就是不使用的状态。那么该内存空间之后就会被释放。就不会占用多余空间。
            其次我有个建议。我并不推荐单纯的写瞬移cleo需要使用所谓视觉上的球体,或者你可以直接写瞬移。例如走到门边自动传送过去。而不需要所谓的视觉效果。
            其次,如果您非要使用视觉效果,推荐使用创建灯光和粒子特效的OP代替。



            IP属地:湖南来自Android客户端115楼2020-07-17 10:03
            回复
              最后说说是否能够解决CSphere内存的上限呢?
              我认为完全可以,因为CSphere是在游戏中即时创建即时载入内存,而不是游戏加载时一次性载入。
              所以如果你了解游戏底层。那么实际上可以通过C++创建自己的插件解决这个问题。
              或者您懂ASM汇编,重新写一个CSphere结构体,并且分配一段更大的内存空间给它,那么实际上就可以创建n个球体共存了。只要分配的内存够大。
              如果您不懂C++(话说我也是半成品
              你也可以通过CLEO静态内存注入该汇编代码,并且把游戏所有调用CSphere的地方全部指向你写的汇编代码段(需要自己找地址)而且CLEO内存空间是非常大的,完全足够分配更多内存给CSphere,或者你直接动态内存分配也可以。
              不过鉴于您的个人能力,我认为可能对于内存和游戏结构这块并不了解。
              我也只是说说解决方法,由于我手中有其他项目要编写,不会帮您创建该脚本(需要很多时间)。
              最后您的问题,仅仅是创建一个蹲下的CLEO非常容易(原本我是想通过函数实现的,但可能您的理解能力不够,我就直接使用OP 0327实现)
              代码如下图:
              通过输入作弊码“Crouch”触发蹲下,在蹲下时再次输入作弊码“Crouch”恢复站立。
              请注意(输入作弊码的OP属于CLEO2.0主程序添加的OP。请确保你使用的是2.0版)
              [p]网页链接
              CLEO主程序官网可以下载最新2.0.0.5的CLEO主程序
              如果你不使用2.0版,请自己改成按键触发。


              IP属地:湖南来自Android客户端116楼2020-07-17 10:24
              收起回复
                7月17日
                蓝圈显示方面,我把除雪松林别墅内部之外各个传送点的蓝圈关闭了,现在再跑一遍剧情,显示正常。
                这样一来修改工作就结束了,届时把汉化稍稍修改一下就完事,顺便再等我朋友也顺利100%就行。
                感谢一个月以来各位朋友们、大佬们的帮助与建议
                届时游戏文件我发在贴吧里吧,不过杂七杂八改了不少东西,还是解压即玩简单粗暴。


                IP属地:海南117楼2020-07-17 15:17
                收起回复
                  加油


                  IP属地:山东来自Android客户端118楼2020-07-23 01:18
                  回复
                    我对CLEO的不熟悉导致了我和部下点的爱恨情仇。


                    最开始,我复制粘贴忽视任务变量,导致了鬼藏者任务提前与三合会任务1、恶魔帮任务2无法开始。
                    后来修改了一下,正常了。但是做完三合会任务、恶魔帮任务后,没法招部下。
                    再后来,把各种任务变量删掉,部下点cleo得以常驻,然后发现,尽管脚本没有大问题,但是和某个主线任务产生冲突,导致完成度最多99%……这个是朋友发现最终任务无法开启后,我从零开始超级加速肝100%从而证实的。解决办法自然是把部下点生效的时机往后推,避开冲突。
                    最后的最后,询问了XMDS大哥,明白了每个任务有对应的独立变量,往两个cleo脚本添加了条件语句,使得日本帮部下点于夺取雪松林别墅后启用,利昂家族部下点于鬼藏者任务后启用。
                    然后朋友从初始档开始肝,现已100%完成,没有bug,可喜可贺



                    IP属地:海南120楼2020-07-23 12:29
                    收起回复
                      好!


                      IP属地:广西来自Android客户端121楼2020-07-23 14:19
                      收起回复
                        很棒


                        IP属地:天津来自Android客户端122楼2020-07-23 18:18
                        收起回复
                          下载来玩发现mod质量相当不错啊!
                          主要是有汉化我是没想到的,而且这个翻译质量真是大赞,比如终局那句一将功成万骨枯配上满地尸体的场面实在是太有气势了
                          工作室好像是啥p开头的,翻译的不知道是谁,再加上楼主的修补和改进就真的太完美了。总之你们都值得大赞


                          来自iPhone客户端123楼2020-08-04 04:29
                          收起回复
                            非常厉害!希望早点发布,另外119L被百度吞了


                            IP属地:山东124楼2020-08-08 21:32
                            收起回复
                              不明觉厉,当年很早就开始接触gta 3d世界观作品,也只能做到熟练修改mod而已,对于制作mod以及制作cleo等一概不通,不过当年有试着详细了解过cleo,不管是以当时的眼光还是现在的眼光来看都是无比复杂的,其中的困难程度可想而知。楼主挺有耐心的,gta3这么老的游戏还能坚持下去,真的很厉害。


                              IP属地:广东125楼2020-08-09 02:35
                              收起回复