mirror of
https://github.com/mostlikely4r/construction-mod.git
synced 2026-01-19 19:24:44 +00:00
117 lines
3.6 KiB
C#
117 lines
3.6 KiB
C#
function stopBlock(%client,%size,%type) {
|
|
%plyr = %client.player;
|
|
%pos = pos(%plyr);
|
|
%maxRange = 500;
|
|
|
|
%className = "ForceFieldBare";
|
|
|
|
if (!%type)
|
|
%type = 8;
|
|
if (!%size)
|
|
%size = 500;
|
|
|
|
%planeSize = %size * 2;
|
|
|
|
%pieces = mCeil(%planeSize / %maxRange);
|
|
%pieceSize = %planeSize / %pieces ;
|
|
|
|
%point1 = vectorAdd(%pos, %size SPC %size SPC %size);
|
|
%point2 = vectorAdd(%pos, vectorScale(%size SPC %size SPC %size,-1));
|
|
// echo(%pos);
|
|
// echo(%point1);
|
|
// echo(%point2);
|
|
|
|
for (%x =0; %x < %pieces;%x++) {
|
|
for (%y =0; %y < %pieces; %y++) {
|
|
%topWall = new (%className)() {
|
|
dataBlock = DeployedForceField @ %type;
|
|
scale = %pieceSize SPC %pieceSize SPC 0.5;
|
|
};
|
|
%bottomWall = new (%className)() {
|
|
dataBlock = DeployedForceField @ %type;
|
|
scale = %pieceSize SPC %pieceSize SPC 0.5;
|
|
};
|
|
%eastWall = new (%className)() {
|
|
dataBlock = DeployedForceField @ %type;
|
|
scale = %pieceSize SPC 0.5 SPC %pieceSize;
|
|
};
|
|
%westWall = new (%className)() {
|
|
dataBlock = DeployedForceField @ %type;
|
|
scale = %pieceSize SPC 0.5 SPC %pieceSize;
|
|
};
|
|
%northWall = new (%className)() {
|
|
dataBlock = DeployedForceField @ %type;
|
|
scale = 0.5 SPC %pieceSize SPC %pieceSize;
|
|
};
|
|
%southWall = new (%className)() {
|
|
dataBlock = DeployedForceField @ %type;
|
|
scale = 0.5 SPC %pieceSize SPC %pieceSize;
|
|
};
|
|
%topWall.setTransform(vectorAdd(%point1,-1 * %x * %pieceSize SPC -1 * %y * %pieceSize SPC "0") SPC "0 0 1 3.14");
|
|
%eastWall.setTransform(vectorAdd(%point1,-1 * %x * %pieceSize SPC "0" SPC -1 * %y * %pieceSize) SPC "0 1 0 3.14");
|
|
%northWall.setTransform(vectorAdd(%point1,"0" SPC -1 * %x * %pieceSize SPC -1 * %y * %pieceSize) SPC "1 0 0 3.14");
|
|
%bottomWall.setTransform(vectorAdd(%point2,%x * %pieceSize SPC %y * %pieceSize SPC "0") SPC "0 0 1 0");
|
|
%westWall.setTransform(vectorAdd(%point2,%x * %pieceSize SPC "0" SPC %y * %pieceSize) SPC "0 1 0 0");
|
|
%southWall.setTransform(vectorAdd(%point2,"0" SPC %x * %pieceSize SPC %y * %pieceSize) SPC "1 0 0 0");
|
|
|
|
%topWall.team = %plyr.client.team;
|
|
%topWall.setOwner(%plyr);
|
|
%topWall.pzone.delete();
|
|
%topWall.addToBlockGroup();
|
|
$TeamDeployedCount[%plyr.team,ForceFieldDeployable]++;
|
|
|
|
%eastWall.team = %plyr.client.team;
|
|
%eastWall.setOwner(%plyr);
|
|
%eastWall.pzone.delete();
|
|
%eastWall.addToBlockGroup();
|
|
$TeamDeployedCount[%plyr.team,ForceFieldDeployable]++;
|
|
|
|
%northWall.team = %plyr.client.team;
|
|
%northWall.setOwner(%plyr);
|
|
%northWall.pzone.delete();
|
|
%northWall.addToBlockGroup();
|
|
$TeamDeployedCount[%plyr.team,ForceFieldDeployable]++;
|
|
|
|
%bottomWall.team = %plyr.client.team;
|
|
%bottomWall.setOwner(%plyr);
|
|
%bottomWall.pzone.delete();
|
|
%bottomWall.addToBlockGroup();
|
|
$TeamDeployedCount[%plyr.team,ForceFieldDeployable]++;
|
|
|
|
%westWall.team = %plyr.client.team;
|
|
%westWall.setOwner(%plyr);
|
|
%westWall.pzone.delete();
|
|
%westWall.addToBlockGroup();
|
|
$TeamDeployedCount[%plyr.team,ForceFieldDeployable]++;
|
|
|
|
%southWall.team = %plyr.client.team;
|
|
%southWall.setOwner(%plyr);
|
|
%southWall.pzone.delete();
|
|
%southWall.addToBlockGroup();
|
|
$TeamDeployedCount[%plyr.team,ForceFieldDeployable]++;
|
|
}
|
|
}
|
|
}
|
|
|
|
function ForceFieldBare::addToBlockGroup(%obj) {
|
|
%group = nameToID("MissionCleanup/BlockGroup");
|
|
if (%group <= 0) {
|
|
%group = new SimGroup("BlockGroup");
|
|
MissionCleanup.add(%group);
|
|
}
|
|
%group.add(%obj);
|
|
}
|
|
|
|
function removeBlock() {
|
|
%group = nameToID("MissionCleanup/BlockGroup");
|
|
if (!(%group <= 0)) {
|
|
%count = %group.getCount();
|
|
for(%i=0;%i<%count;%i++) {
|
|
%obj = %group.getObject(%i);
|
|
if (%obj) {
|
|
$TeamDeployedCount[%obj.team,ForceFieldDeployable]--;
|
|
}
|
|
}
|
|
%group.delete();
|
|
}
|
|
} |