狙击步枪拾取修复
在高尔夫俱乐部的金属探测器旁组装武器时,许多人可能会问——我的狙击步枪到底去哪了?许多人认为金属探测器根本无法找回这种武器,但事实并非如此:步枪的拾取确实存在,但在我们无法到达的地方——建筑物内部。
经过一些研究,我得出结论,拾取的错误坐标并非偶然——如果第三排应该有三个拾取物,第三个就应该在错误放置狙击步枪的地方。但正如我们所知,这种情况下三排是不可接受的,根据拾取物的排列逻辑(每排两个拾取物的蛇形排列),可以准确判断狙击步枪的拾取物应该在重武器拾取物之后的下一排。
理解了上述内容并确定了所有必要的坐标后,只需在实践中实现修复,完全不需要重新发明轮子:早在2017年,spaceeinstein就制作了一个 脚本,该脚本根据内存中的坐标找到古巴人衣物的拾取物,并在必要时将其移动到正确的坐标,记录新的值。spaceeinstein发布的脚本源代码恰好派上用场:我只需输入狙击步枪拾取物的正确坐标,稍微修改拾取物类型的识别方法,并添加对不同游戏版本的支持。我要对spaceeinstein表示衷心的感谢,既感谢他提供的脚本,也感谢他发布的源代码——这个修复在很大程度上得益于他。
修复特点:
- 没有拾取物被删除或创建——脚本仅在狙击步枪拾取物已由游戏创建的情况下移动它;
- 金属探测器拾取物的坐标中明显可见算术序列,因此狙击步枪拾取物并不是“凭感觉”移动,而是准确移动到它应该在的位置;
更新:
- 添加了对不同游戏版本的支持(已在1.0和1.1版本上测试,同时也支持Steam版本,但未经过测试且不保证其有效性)。
安装: 将sniperpickupfix.cs文件移动到游戏文件夹中的CLEO文件夹(当然需要安装CLEO)。
就这些,祝大家游戏愉快!
Собирая своё оружие у металлодетектора в гольф клубе думаю многие задавались вопросом — куда, чёрт возьми, подевалась моя снайперская винтовка? Многим казалось, что металлодетектор просто не способен вернуть нам этот тип оружия, но это не так: пикап винтовки создаётся, но там, откуда нам его не то, что не достать, а даже не видно — внутри здания.
Немного изучив вопрос я пришёл к выводу, что ошибочные координаты пикапа неслучайны — если бы в третьем ряду должно было бы быть три пикапа — третий располагался бы именно там, куда по ошибке и расположили снайперскую винтовку. Но, как мы уже знаем, три ряда в данном случае недопустимы, и исходя из логики расположения пикапов (змейка из рядов по 2 пикапа в каждом) можно безошибочно определить, что пикапу снайперской винтовки место в следующем ряду сразу после пикапа тяжелого оружия.
Поняв вышеизложенное и определив все необходимые координаты оставалось лишь реализовать исправление на практике, и изобретать велосипед здесь не пришлось: ещё в 2017 году spaceeinstein делал скрипт, который находит пикап одежды кубинцев по координатам в памяти и при необходимости перемещает его на корректные координаты, записывая в память новые значения. Опубликованный spaceeinstein'ом исходный код скрипта оказался весьма кстати: всё, что мне оставалось сделать — вписать корректные для пикапа снайперской винтовки координаты, немного изменить метод определения типа пикапа и добавить поддержку разных версий игры. Хочу выразить огромную благодарность spaceeinstein'у как за сам скрипт, так и за опубликованный исходный код — это исправление стало возможным во многом благодаря именно ему.
Особенности исправления:
- Никакие пикапы не удаляются и не создаются — скрипт лишь перемещает пикап снайперской винтовки при условии, что он уже создан игрой;
- В координатах пикапов металлодетектора отчётливо проглядывается арифметическая последовательность, так что пикап снайперской винтовки переносится не "на глаз", а ровно туда, где ему и место;
Обновление:
- Добавлена поддержка разных версий игры (проверено на версиях 1.0 и 1.1, также присутствует поддержка Steam версии, но работоспособность не проверена и не гарантирована).
Установка: перенесите файл sniperpickupfix.cs в папку CLEO в папке с вашей игрой (требуется установленный CLEO, естественно).
На этом всё, всем приятной игры!