52
« on: June 05, 2012, 03:16:14 PM »
registerInputEvent("FxDTSBrick","onPlayerFirstTouch","Self fxDTSBrick" TAB "Player Player" TAB "Client GameConnection" TAB "MiniGame MiniGame");
package onPlayerFirstTouch
{
function FxDTSBrick::onPlayerTouch(%obj, %player)
{
if($Sim::Time - %player.lastTouchTime[%obj] > 0.3)
%obj.onPlayerFirstTouch(%obj,%player);
%player.lastTouchTime[%obj] = $Sim::Time;
return parent::onPlayerTouch(%obj, %player);
}
function FxDTSBrick::onPlayerFirstTouch(%obj, %player)
{
$InputTarget_["Self"] = %obj;
$InputTarget_["Player"] = %player;
$InputTarget_["Client"] = %player.client;
if($Server::LAN)
$InputTarget_["MiniGame"] = getMiniGameFromObject(%player.client);
else
{
if(getMiniGameFromObject(%this) == getMiniGameFromObject(%player.client))
$InputTarget_["MiniGame"] = getMiniGameFromObject(%obj);
else
$InputTarget_["MiniGame"] = 0;
}
%obj.processInputEvent(onPlayerFirstTouch, %player.client);
}
};
activatePackage(onPlayerFirstTouch);
At least for "on first touch" you don't need triggers or schedules.
(Note that onPlayerTouch only registers for one player at a time. If you step on a brick then someone else jumps on and off it can count as you leaving it in between - this way is consistent with how events work but not other uses e.g. capture points which check multiple players)
You might be able to save one timer/last touched brick instead of one variable per brick unless one player can trigger touch events on two bricks at once.