在记事本++中自动交换某些行

时间:2014-01-10 10:02:50

标签: automation notepad++ swap lines sqf

我得到了这个由.MAMA2(游戏)的3D编辑器生成的.SQF文件。 这个编辑器在很多方面都有问题,但它是添加自定义地图内容的唯一“简单”方式。一个很好的例子是这个问题:

编辑器将某些行写入所谓的.SQF文件。每个对象由几行组成。问题是,行的顺序并不总是以正确的顺序写入。它导致对象生成错误。拥有超过1000个对象,超过10000多行时,以正确的顺序制作每个对象的行将成为一项艰巨的任务。

以下是文件中几个对象的示例:

_vehicle_372 = objNull;
if (true) then
{
_this = createVehicle ["MAP_asf2_1_1000", [13661.608, 2976.1057, 4.9591064e-005], [], 0, "CAN_COLLIDE"];
  _vehicle_372 = _this;
  _this setDir 40.844734;
  _this setPos [13661.608, 2976.1057, 4.9591064e-005];
};

_vehicle_378 = objNull;
if (true) then
{
  _this = createVehicle ["MAP_dum_mesto2", [13689.696, 2863.1313, 0.17608854], [], 0, "CAN_COLLIDE"];
  _vehicle_378 = _this;
  _this setDir -30.116863;
  _this setVectorUp [0, 0, 1];
  _this setPos [13689.696, 2863.1313, 0.17608854];
};

_vehicle_380 = objNull;
if (true) then
{
  _this = createVehicle ["MAP_dum_mesto_in", [13686.867, 2907.3464, -0.009554117], [], 0, "CAN_COLLIDE"];
  _vehicle_380 = _this;
  _this setDir -63.79903;
  _this setPos [13686.867, 2907.3464, -0.009554117];
};

_vehicle_384 = objNull;
if (true) then
{
  _this = createVehicle ["MAP_HouseBlock_B1", [13722.756, 2839.5999, 0.29589382], [], 0, "CAN_COLLIDE"];
  _vehicle_384 = _this;
  _this setDir -216.63187;
  _this setVectorUp [0, 0, 1];
  _this setPos [13722.756, 2839.5999, 0.29589382];
};

我想交换的行是:

_this setVectorUp [0, 0, 1];

使用:

_this setPos [13722.756, 2839.5999, 0.29589382];

setvectorup行值是一致的,但setPos每次都会包含不同的coords。 (只有“_this setPos”保持不变)。

在notepad ++中是否有办法自动将所有“_t setvectorup”行与“_this setPos”行交换?

2 个答案:

答案 0 :(得分:1)

假设两条线相邻,那么它们可以通过搜索交换并在Notepad ++中替换。将查找内容设置为^([ \t]*_this setVectorUp.*)\r\n([ \t]*_this setPos.*)$,将替换为设置为\2\r\n\1。确保选中正则表达式,并选择不匹配换行符

^$匹配第一行的开头和第二行的结尾,\r\n匹配它们之间的换行符。 [ \t]*匹配行上的前导空格。 ([ \t]*而不是\s*使人类读者清楚地知道CR和LF被排除在外。).*匹配不包含换行符的字符序列。所以[ \t]*_this setVectorUp.*匹配线,类似于另一条线。加入()会将匹配的行记录为捕获文字。

替换文本会反转两条捕获的行的顺序并插入换行符序列。

这个答案还假设这两个项目恰好是两行。如果项目分成更多行,或者如果存在其他项目,则可能不会交换某些项目,或者交换可能会重新排序错误的项目。

答案 1 :(得分:-2)

544
4
-1269

770
4
325

tp@p[score_money_min=10000000,team=default] 96 4 -397
scoreboard teams join VIP @p[r=5]
scoreboard players remove @p money 10000000

23.23.76.109:25565