Closed Majestymo closed 1 year ago
另外事先已经用cvar命令更改特感数量限制了
inf_queue::getInfectedQueue
的 Array Index out-of-bounds 7
数组越界的问题,请更新 Commit id 为 6a26d69
的最新版本,猜测你使用的可能是 7427829
之前的版本,关于这个问题详情请查看相关问题:Issue #10Ai Tank 2.0
无法找到特感数量 Cvar l4d_infected_limit
的问题,这个 Cvar 只会在 Ai Tank
插件开启消耗时才会读取其值,详情请查看:Ai HardSI readme L32-34,因为读取这个 Cvar 是帧操作,因此服务器运行中会一直报错,解决方法如下
OnPluginStart
内 g_hSiLimit = FindConVar("l4d_infected_limit");
的 l4d_infected_limit
为自己刷特插件的特感数量 Cvarg_hSiLimit = L4D2_GetScriptValueInt("MaxSpecials", -1);
获取导演系统默认特感数量关于 infected_control
无法读取 infected_queue.cfg
文件的问题,请确认在发生 超过 6 特无法刷新特感
问题到 未配置 16 特特感等待队列
中间有没有更改过 inf_queue
的版本
超过 6 特无法刷新特感问题
,则更改为刷新 16 特时,获取超过 6 特的等待队列报错,退出 getInfectedQueue
函数,不会发生报 未配置 16 特的特感等待队列
的错误未配置 16 特的特感等待队列
的错误,则表明插件已正确读取到 infected_queue.cfg
文件并成功将文件转为 KeyValue
树,请在 Lxxx
的日志文件中查看插件日志输出,而这个错误是在遍历完成所有等待队列发现全部为 null
值(也就是没有配置任何等待队列)才会报,这两个错误理论上是互斥的1,2,3,4
位置刷新,可以获取到特感刷新队列,但实际只会刷新 4 只特感,因为位置 4 后的所有位置均为配置允许刷新的特感种类请在更新完 6a26d69
版本后再次测试能否刷新超过 6 特,如仍有配置了 infected_queue.cfg
而仍然报 未配置特感等待队列
的情况,请测试是否 只有刷新某些特感数量(如 16,17,18 特)
时有这个问题还是均会出现
谢谢树树子,aitank我应该是没有仔细看readme了,因为我之前用inf_contr没有问题,就没有仔细看了,换了inf_r那个刷特数量的cvar变了所以疯狂弹错,另外inf_r重新按照你的流程排查了一下,发现现在可以其他十多个特了,但是后台依旧会有无法创建fakeclient的问题,不知道啥情况,会比实际设定的少几个,这是我现在的inf_q设定,是不是z_xxx_limit的问题,我稍后把限制都调到6试试,先谢谢树树子啦
请尝试更新 004f118
版本,对于 CreateFakeClient() returned Null
的问题
MaxClients (31)
客户端上限,如果超过 MaxClients
则超过 MaxClients
值的特感将会无法刷新L4D2_SpawnSpecial
函数而并未检查返回值有效性的问题,这次更新增加了对每一个特感刷新的有效性检查,如果某次刷新无效,则会重试继续刷新这个特感若干次,皆无法刷新则跳过这个特感,刷新下一个特感树树子,我更新了你说的这个版本之后,报另外一个错误,你看看,我没有修改任何参数,默认情况6特,之前的版本还能正常使用,这个版本用的上个版本的配置,我看了下readme的更新,也没有要更新配置的说明,应该是还有点小问题
之前更改过 inc 里面的特感刷新队列创建完成的函数签名,inf_queue.sp
和 timers.sp
都会触发那个函数,昨晚忘记上传 inc 和 timers.sp
了,但是上传了 inf_queue.sp
更改后的版本,导致 inf_queue.sp
触发函数时参数列表对应不上 😢,更新一下 inc 和 timers.sp
应该没有问题了
怎么样才能知道maxclient的值是多少呢
或者说,怎么样才能知道玩家和特感数量,是survivor_limit和inf_limit吗,今天直接把smx文件放进去之后刷新的时候每一种特感报return null
怎么样才能知道maxclient的值是多少呢
Maxclients用了l4dtools后面是31,没有破解人数限制是17(好像)。
survivor_limit一般是设定的生还者人数上限,inf_limit是插件设置的特感生成上限。
你如果最多只能生成不超过13只特感,那大概率是你没有破解人数上限
MaxClients
是当前允许连接服务器的最大客户端数量,由 gpGlobals->maxClients
在运行时动态指定,不使用 L4DToolZ Metamod plugin
破解客户端上限是 18(0-17),使用了之后客户端上限是 31(0-30),无法刷新特感 returned NULL
时检查当前在服务器里的玩家与插件设置特感上限之和是否超过 MaxClients
,超过了就无法创建 FakeClient
MaxClients
值 31,因此多出来的 5 个特感无法刷新,并报错 CreateFakeClient() returned NULL.
survivor_limit
是生还者上限,客户端不仅仅是生还者,无论在哪个阵营的能操作的对象(生还者、旁观者、特感)都算客户端是的。谢谢树树子和东哥的解答,我这边最大客户端是18,用的猫猫虫的l4dtoolz,忘了sv_setmax 31了,好像之前有一个cfg里面是设置了的,现在设置为31之后后台没有报错,等回家再实际游玩测试一下
特感刷新插件忘了有没有用最新inf_queue编译了,但是这个文件他貌似读取不到,权限都没问题,我以为是大小写问题都试了一下还是不行,另外如果超过6特这个inf_r会疯狂保存,ai_tank_2.0也是疯狂报错,但是可以起作用,昨天玩了一晚上2个多小时吧,就这么大了,树树子麻烦看看这是什么问题@GlowingTree880