| Blockland Forums > Modification Help |
| Constant RadiusImpulse force |
| << < (2/5) > >> |
| Muffinmix:
--- Quote from: MrPickel on July 17, 2007, 03:26:10 AM ---No, triggers are pretty simple. --- End quote --- Oh, well, where could I learn about them? |
| MrPickle:
Hmm, for what your trying to do, try looking at Terrors impulse script, i think it uses triggers. |
| Muffinmix:
It does, I think, I see trigger here and there --- Code: ---function PulserImage::onFire(%this, %obj, %slot) { //messageAll( 'MsgClient', 'pushBroom prefired!!!'); Parent::onFire(%this, %obj, %slot); %obj.playthread(2, rotCW); } function PulserImage::onStopFire(%this, %obj, %slot) { %obj.playthread(2, root); //messageAll( 'MsgClient', 'stopfire'); } datablock TriggerData(ImpulseTrigger) { // tickPeriodMS is a value is used to control how often the console // onTriggerTick callback is called while there are any objects // in the trigger. The default value is 100 MS. tickPeriodMS = 100; }; function ImpulseTrigger::onTickTrigger(%this) { //Do nothing as it spams console :( } function ImpulseTrigger::onEnterTrigger(%this, %trigger, %obj) { if(%obj.getClassName() $= "WheeledVehicle") { if($Pref::Server::Impulse_AllowVehicles == 1) { return; } } %impulse = %trigger.brick.impulse; if(%impulse $= "") { schedule(100,0,"KillImpTrig",%trigger); return; } if(!isObject(%trigger.brick)){ schedule(100,0,"KillImpTrig",%trigger); return; } %impulse = %trigger.brick.impulse; %obj.applyImpulse(0,%impulse); } function CreateImpulseTrigger(%brick) { if(!isobject(%brick)) return; %triggerX = %brick.dataBlock.brickSizeX/2 + 0.1; %triggerY = %brick.dataBlock.brickSizeY/2 + 0.1; %triggerZ = %brick.dataBlock.brickSizeZ*0.2 + 0.1; if(%brick.angleid == 2){ %newpos = getWord(%brick.getTransform(),0) + %triggerX/2 SPC getWord(%brick.getTransform(),1) - %triggerY/2 SPC getWord(%brick.getTransform(),2) - (%triggerZ / 2); %newrot = %brick.rotation; } if(%brick.angleid == 0){ %triggerXnew = %triggerX/2; %triggerYnew = %triggerY/2; %newpos = getWord(%brick.getTransform(),0) - %triggerXnew SPC getWord(%brick.getTransform(),1) + %triggerYnew SPC getWord(%brick.getTransform(),2) - (%triggerZ / 2); %newrot = %brick.rotation; } if(%brick.angleid == 1){ %triggerYsq = %triggerX/2; %triggerYsq = %triggerYsq - %triggerYsq*2; %triggerXsq = %triggerY/2; %triggerXsq = %triggerXsq - %triggerXsq*2; %newrot = %brick.rotation; %newpos = getWord(%brick.getTransform(),0) - %TriggerXsq SPC getWord(%brick.getTransform(),1) - %triggerYsq SPC getWord(%brick.getTransform(),2) - (%triggerZ / 2); } if(%brick.angleid == 3){ %triggerXsq = %triggerY/2; %triggerYsq = %triggerX/2; %newrot = %brick.rotation; %newpos = getWord(%brick.getTransform(),0) - %TriggerXsq SPC getWord(%brick.getTransform(),1) - %triggerYsq SPC getWord(%brick.getTransform(),2) - (%triggerZ / 2); } %trigger = new Trigger() { position = %newpos; rotation = %newrot; scale = "1 1 1.2"; dataBlock = ImpulseTrigger; polyhedron = "0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.0000000 0.0000000 -1.0000000 0.0000000 0.0000000 0.0000000 1.0000000"; }; %brick.trigger = %trigger; %trigger.brick = %brick; %trigger.setScale(%triggerX SPC %triggerY SPC %triggerZ); } function KillImpTrig(%obj) { %obj.delete(); } function serverCmdSetImpulse(%client,%x,%y,%z) { if(%x $= "" || %y $= "" || %z $= "") { Messageclient(%client,'',"\c2You did not fill in all the specified values!"); %client.impulse = ""; return; } if(%x > 100 || %y > 100 || %z > 100) { Messageclient(%client,'',"\c2One or more of your values were too big! (< 100)"); %client.impulse = ""; return; } if(%x < -100 || %y < -100 || %z < -100) { Messageclient(%client,'',"\c2One or more of your values were too small! (> -100)"); %client.impulse = ""; return; } %client.impulse = (%x*100) SPC (%y*100) SPC (%z*100); Messageclient(%client,'',"\c2You have set your impulse, now use the Pulser to create a impulse!"); } --- End code --- I have absolutely no idea what any of this means, but from what Terror says it allows the projectile to make a brick Impulse anyone who touches it. I just need to get a weapon to create an Impulse field when the projectile hits a wall (brick or not) or detonates mid air, and make it last a set amount of time. |
| MrPickle:
Easy done. Remove the if(!isObject(%brick)) return; then make a schedule that deletes the trigger. |
| Muffinmix:
--- Quote from: MrPickel on July 18, 2007, 03:23:45 AM ---Easy done. Remove the if(!isObject(%brick)) return; then make a schedule that deletes the trigger. --- End quote --- Ok, thanks for all help you've given me until now, so I just need to figure out how to make the schedule and I'll be one happy guy :cookieMonster: |
| Navigation |
| Message Index |
| Next page |
| Previous page |