研究MONGEN.TXT的参数“集中坐标刷怪”发现了引擎源码的错误
本想利用集中坐标刷怪,方便把大地图刷成一堆一堆的怪物方便玩家群怪就研究了下这个参数。网络寻觅无果后打开了以前下载过的源码。
搜索Mongen.txt关键字,发现nMissionGenRate代表此参数。下边是相关代码
复制代码
重点区域用红色标注了,用我三脚猫的英语和仅能写个一键回收NPC的脚步知识读懂大概意思:如果RANDOM(100-集中坐标变量)如果成立,则执行在随机20范围内随机刷怪,否则在MONGEN.TXT里设置的范围内随机刷怪。
然鹅,发现一个奇怪的地方:红字((nX - 10) + Random(20))里的nX已经做过 (MonGen.nX - MonGen.nRange) + Random(MonGen.nRange * 2 + 1);
运算了。也就是说,他是在随机了坐标的基础上再做20的随机坐标。此时猜想韩国程序员当年就写错了代码导致这个功能不正确。
于是我设置了祖玛卫士和祖玛雕像刷怪范围0来验证是否正确,其中祖玛雕像100%触发集中坐标刷新
D505 154 172 祖玛卫士 0 10 120 0
D505 154 172 祖玛雕像 0 10 120 100
复制代码
一进游戏果然:雕像在20范围内刷新,祖玛卫士全部叠在154.172坐标。
file:///C:/Users/Administrator/AppData/Roaming/Tencent/Users/332022126/QQ/WinTemp/RichOle/A_%25KOBX)AZ%7BZ]PG$AVK9SSK.png
补充内容 (2021-7-23 15:11):
begin
Result := True;
nCode := 0;
dwStartTick := GetTickCount();
try
nCode := 1;
if MonGen <> nil then begin
nCode := 2;
if MonGen.nRace > 0 then begin
... xiaoshushe 发表于 2021-7-23 12:59
膜拜大神,,,能帮忙看看角色网关加壳了没么。。 begin
Result := True;
nCode := 0;
dwStartTick := GetTickCount();
try
nCode := 1;
if MonGen <> nil then begin
nCode := 2;
if MonGen.nRace > 0 then begin
nCode := 3;
if Random(100) < MonGen.nMissionGenRate then begin
nCode := 4;
nX := (MonGen.nX - MonGen.nRange) + Random(MonGen.nRange * 2 + 1);
nY := (MonGen.nY - MonGen.nRange) + Random(MonGen.nRange * 2 + 1);
nCode := 5;
for I := 0 to nCount - 1 do begin
nCode := 6;
Cert := AddBaseObject(nil, MonGen.sMapName, ((nX - 10) + Random(20)), ((nY - 10) + Random(20)), MonGen.nRace, MonGen.sMonName);
nCode := 7;
if Cert <> nil then begin
nCode := 8;
Cert.m_nChangeColorType := MonGen.nChangeColorType; //是否变色
nCode := 9;
MonGen.CertList.Add(Cert);
Cert.AddMapCount;
end;
nCode := 10;
if (GetTickCount - dwStartTick) > g_dwZenLimit then begin
Result := False;
Break;
end;
end;
end else begin
for I := 0 to nCount - 1 do begin
nCode := 11;
nX := (MonGen.nX - MonGen.nRange) + Random(MonGen.nRange * 2 + 1);
nY := (MonGen.nY - MonGen.nRange) + Random(MonGen.nRange * 2 + 1);
nCode := 12;
Cert := AddBaseObject(nil, MonGen.sMapName, nX, nY, MonGen.nRace, MonGen.sMonName);
nCode := 13;
if Cert <> nil then begin
nCode := 14;
Cert.m_nChangeColorType := MonGen.nChangeColorType; //是否变色
nCode := 15;
MonGen.CertList.Add(Cert);
Cert.AddMapCount;
nCode := 16;
end;
if (GetTickCount - dwStartTick) > g_dwZenLimit then begin
Result := False;
Break;
end;
end;
end;
end;
end;
except
MainOutMessage(sExceptionMsg + \' Code:\' + IntToStr(nCode));
end;
end;
复制代码 大佬,改下引擎吧 gee引擎的未来就靠你了。 GEE官方正在招兵买马的。。。。 pai哥 发表于 2021-7-24 09:01 GEE官方正在招兵买马的。。。。
我这属于推理学范畴……和编程关系不大 刷怪一直让人头大,只能多写几个坐标,好累。写少了么,怪刷出来,就是一条直线 。。。 caiking 发表于 2021-7-25 08:46 刷怪一直让人头大,只能多写几个坐标,好累。写少了么,怪刷出来,就是一条直线 。。。
不应该吧,不都是随机散落的么
页:
[1]