| Blockland Forums > Suggestions & Requests |
| precise spread patterns |
| (1/1) |
| Bushido:
what i want to do is, for reference, is essentially something like tf2's nospread on the left is what firing without nospread looks like, and on the right is firing with nospread. using nospread causes bullets to always fire in the same pattern i want to experiment with more consistent weapons, but i don't think anyone has made a script that allows me to choose the precise pattern of where each bullet flies. just a general sort of accuracy rating, like ephi's shotgun (whose script i have used basically from day one) can someone put together a script like this? i will almost certainly use it in the quake-type weapons pack |
| MARBLE MAN:
That's pretty easy to make, might do it once I'm done with this FTC competition |
| phflack:
looked at ephi's shotgun --- Code: ---function shotgunImage::onFire(%this,%obj,%slot) { if((%obj.lastFireTime+%this.minShotTime) > getSimTime()) return; %obj.lastFireTime = getSimTime(); %obj.setVelocity(VectorAdd(%obj.getVelocity(),VectorScale(%obj.client.player.getEyeVector(),"-3"))); %obj.playThread(2, shiftAway); %projectile = %this.projectile; %spread = 0.0015; %shellcount = 3; for(%shell=0; %shell<%shellcount; %shell++) { %vector = %obj.getMuzzleVector(%slot); %objectVelocity = %obj.getVelocity(); %vector1 = VectorScale(%vector, %projectile.muzzleVelocity); %vector2 = VectorScale(%objectVelocity, %projectile.velInheritFactor); %velocity = VectorAdd(%vector1,%vector2); %x = (getRandom() - 0.5) * 10 * 3.1415926 * %spread; %y = (getRandom() - 0.5) * 10 * 3.1415926 * %spread; %z = (getRandom() - 0.5) * 10 * 3.1415926 * %spread; %mat = MatrixCreateFromEuler(%x @ " " @ %y @ " " @ %z); %velocity = MatrixMulVector(%mat, %velocity); %p = new (%this.projectileType)() { dataBlock = %projectile; initialVelocity = %velocity; initialPosition = %obj.getMuzzlePoint(%slot); sourceObject = %obj; sourceSlot = %slot; client = %obj.client; }; MissionCleanup.add(%p); } return %p; } --- End code --- so if you wanted a square pattern like your image in TF2, this might work --- Code: ---function shotgunImage::onFire(%this,%obj,%slot) { if((%obj.lastFireTime+%this.minShotTime) > getSimTime()) return; %obj.lastFireTime = getSimTime(); %obj.setVelocity(VectorAdd(%obj.getVelocity(),VectorScale(%obj.client.player.getEyeVector(),"-3"))); %obj.playThread(2, shiftAway); %projectile = %this.projectile; %spread = 0.0015; %shellcount = 3; for(%shell = 0; %shell < %shellcount; %shell++) { for(%shell = 0; %shell < %shellcount; %shell++) { %vector = %obj.getMuzzleVector(%slot); %objectVelocity = %obj.getVelocity(); %vector1 = VectorScale(%vector, %projectile.muzzleVelocity); %vector2 = VectorScale(%objectVelocity, %projectile.velInheritFactor); %velocity = VectorAdd(%vector1,%vector2); %x = (%shell - 1) * 10 * 3.1415926 * %spread; %y = (%shell - 1) * 10 * 3.1415926 * %spread; %z = (%shell - 1) * 10 * 3.1415926 * %spread; %mat = MatrixCreateFromEuler(%x @ " " @ %y @ " " @ %z); %velocity = MatrixMulVector(%mat, %velocity); %p = new (%this.projectileType)() { dataBlock = %projectile; initialVelocity = %velocity; initialPosition = %obj.getMuzzlePoint(%slot); sourceObject = %obj; sourceSlot = %slot; client = %obj.client; }; MissionCleanup.add(%p); } } return %p; } --- End code --- just need to change the randomness to constants, and make your pattern (in this case a 3x3 spread in a square) |
| Navigation |
| Message Index |