diff options
Diffstat (limited to 'Items.c4d/Sensors.c4d/FingerprintSensor.c4d')
| -rw-r--r-- | Items.c4d/Sensors.c4d/FingerprintSensor.c4d/DefCore.txt | 19 | ||||
| -rw-r--r-- | Items.c4d/Sensors.c4d/FingerprintSensor.c4d/Graphics.png | bin | 0 -> 3430 bytes | |||
| -rw-r--r-- | Items.c4d/Sensors.c4d/FingerprintSensor.c4d/Names.txt | 2 | ||||
| -rw-r--r-- | Items.c4d/Sensors.c4d/FingerprintSensor.c4d/Script.c | 172 | ||||
| -rw-r--r-- | Items.c4d/Sensors.c4d/FingerprintSensor.c4d/StringTblDE.txt | 6 | ||||
| -rw-r--r-- | Items.c4d/Sensors.c4d/FingerprintSensor.c4d/StringTblUS.txt | 6 |
6 files changed, 205 insertions, 0 deletions
diff --git a/Items.c4d/Sensors.c4d/FingerprintSensor.c4d/DefCore.txt b/Items.c4d/Sensors.c4d/FingerprintSensor.c4d/DefCore.txt new file mode 100644 index 0000000..335d9ae --- /dev/null +++ b/Items.c4d/Sensors.c4d/FingerprintSensor.c4d/DefCore.txt @@ -0,0 +1,19 @@ +[DefCore]
+id=FP7I
+Name=Fingerprint sensor
+Version=4,9,5
+Category=C4D_Object|C4D_SelectMaterial|C4D_SelectKnowledge|C4D_SelectHomebase
+Width=10
+Height=4
+Offset=-5,-2
+Mass=10
+Value=5
+Components=METL=1;
+Picture=10,0,64,64
+Vertices=1
+VertexFriction=100
+Grab=2
+Collectible=1
+MaxUserSelect=10
+Rebuy=1
+NoPushEnter=1
diff --git a/Items.c4d/Sensors.c4d/FingerprintSensor.c4d/Graphics.png b/Items.c4d/Sensors.c4d/FingerprintSensor.c4d/Graphics.png Binary files differnew file mode 100644 index 0000000..83ff04b --- /dev/null +++ b/Items.c4d/Sensors.c4d/FingerprintSensor.c4d/Graphics.png diff --git a/Items.c4d/Sensors.c4d/FingerprintSensor.c4d/Names.txt b/Items.c4d/Sensors.c4d/FingerprintSensor.c4d/Names.txt new file mode 100644 index 0000000..d251351 --- /dev/null +++ b/Items.c4d/Sensors.c4d/FingerprintSensor.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Fingerabdrucksensor
+US:Fingerprint sensor
diff --git a/Items.c4d/Sensors.c4d/FingerprintSensor.c4d/Script.c b/Items.c4d/Sensors.c4d/FingerprintSensor.c4d/Script.c new file mode 100644 index 0000000..58a673b --- /dev/null +++ b/Items.c4d/Sensors.c4d/FingerprintSensor.c4d/Script.c @@ -0,0 +1,172 @@ +#strict 2
+#include SN7I
+
+local masterFinger, fingers;
+
+func Init()
+{
+ fingers = [];
+}
+
+func CleanupFingers()
+{
+ ArrayEraseItem(fingers, 0, true);
+}
+
+func Triggers() { return [["$RightFinger$"], ["$WrongFinger$"]];}
+
+func ControlThrow(object caller)
+{
+ if(GetLength(fingers) > 0)
+ {
+ var success = IsKnownFinger(caller);
+ ShowSuccess(success);
+ Trigger(!success, caller);
+ }
+ return ClearCom(caller);
+}
+
+func ShowSuccess(bool success, object caller)
+{
+ if(!success)
+ {
+ Sound("Error");
+ CreateParticle("PSpark", -2, -2, 0, 0, 50, RGB(192, 0, 0));
+ }
+ else
+ {
+ CreateParticle("PSpark", -2, -2, 0, 0, 50, RGB(0, 192, 0));
+ }
+}
+
+func ControlThrowDouble() { return ControlThrow(...); }
+
+func EntranceCallback() { return "ControlThrow"; }
+
+func SetupCondition(object caller)
+{
+ return GetLength(fingers) == 0 || IsKnownFinger(caller);
+}
+
+func IsKnownFinger(object finger)
+{
+ return GetIndexOf(finger, fingers) != -1;
+}
+
+func Setup(object caller, int& menuIndex)
+{
+ if(!CheckMasterFinger())
+ {
+ AddMenuItem("$SetMasterFinger$", "SetMasterFinger", RSR1, caller, 0, caller, 0, C4MN_Add_ForceNoDesc);
+ ++menuIndex;
+ }
+ if(caller == masterFinger)
+ {
+ if(FindObject2(AddFingerCondition()))
+ {
+ AddMenuItem("$AddFinger$", "AddFingers", RSR1, caller, 0, caller, 0, C4MN_Add_ForceNoDesc);
+ ++menuIndex;
+ }
+ if(GetLength(fingers) > 0)
+ {
+ AddMenuItem("$ChangeFingers$", "ChangeFingers", RSR1, caller, 0, caller, 0, C4MN_Add_ForceNoDesc);
+ ++menuIndex;
+ }
+ }
+ return true;
+}
+
+func SetMasterFinger(id id, object caller)
+{
+ if(!CheckMasterFinger())
+ {
+ masterFinger = caller;
+ if(!IsKnownFinger(caller))
+ {
+ fingers[GetLength(fingers)] = caller;
+ }
+ }
+}
+
+func AddFingerCondition()
+{
+ return Find_And(Find_OCF(OCF_CrewMember), Find_ActionTarget(this), Find_Procedure("PUSH"), Find_Not(Find_Func("FP7I_IsKnownFinger", this)));
+}
+
+func GetFingerList(array fingers, bool showMaster)
+{
+ var ret = CreateArray(GetLength(fingers));
+ for(var i = 0; i < GetLength(fingers); ++i)
+ {
+ var obj = fingers[i];
+ ret[i] = [obj, Format("%s (%s)", GetName(obj), GetPlayerName(GetOwner(obj)))];
+ if(showMaster && obj == masterFinger)
+ {
+ ret[i][1] = Format("$MasterFinger$", ret[i][1]);
+ }
+ }
+ return ret;
+}
+
+func AddFingers(id id, object caller)
+{
+ return caller->~CreateSelectionMenu("AddFinger", GetFingerList(FindObjects(AddFingerCondition())), GetID(), "$AddFinger$", this);
+}
+
+func AddFinger(id id, object finger, bool right)
+{
+ if(!IsKnownFinger(finger))
+ {
+ fingers[GetLength(fingers)] = finger;
+ }
+ if(right)
+ {
+ masterFinger = finger;
+ }
+}
+
+func ChangeFingers(id id, object caller)
+{
+ selectCaller = caller;
+ return caller->~CreateSelectionMenu("ChangeFinger", GetFingerList(fingers, true), GetID(), "$ChangeFingers$", this);
+}
+
+func ChangeFinger(id id, object finger, bool right)
+{
+ if(right)
+ {
+ masterFinger = finger;
+ }
+ else
+ {
+ var i = GetIndexOf(finger, fingers);
+ if(i != -1)
+ {
+ ArrayErase(fingers, i);
+ if(finger != masterFinger)
+ {
+ ChangeFingers(0, selectCaller);
+ SelectMenuItem(i - 1, selectCaller);
+ SelectMenuItem(i, selectCaller);
+ }
+ else
+ {
+ masterFinger = 0;
+ }
+ }
+ }
+}
+
+global func FP7I_IsKnownFinger(object sensor)
+{
+ return sensor && sensor->IsKnownFinger(this);
+}
+
+func CheckMasterFinger()
+{
+ if(masterFinger && !GetAlive(masterFinger))
+ {
+ masterFinger = 0;
+ }
+ return !!masterFinger;
+}
diff --git a/Items.c4d/Sensors.c4d/FingerprintSensor.c4d/StringTblDE.txt b/Items.c4d/Sensors.c4d/FingerprintSensor.c4d/StringTblDE.txt new file mode 100644 index 0000000..239f4d7 --- /dev/null +++ b/Items.c4d/Sensors.c4d/FingerprintSensor.c4d/StringTblDE.txt @@ -0,0 +1,6 @@ +RightFinger=Richtiger Fingerabdruck +WrongFinger=Falscher Fingerabdruck +SetMasterFinger=Hauptfingerabdruck setzen +AddFinger=Fingerabdruck hinzufügen +ChangeFingers=Fingerabdrücke verwalten +MasterFinger=Hauptfingerabdruck: %s diff --git a/Items.c4d/Sensors.c4d/FingerprintSensor.c4d/StringTblUS.txt b/Items.c4d/Sensors.c4d/FingerprintSensor.c4d/StringTblUS.txt new file mode 100644 index 0000000..9f7e56f --- /dev/null +++ b/Items.c4d/Sensors.c4d/FingerprintSensor.c4d/StringTblUS.txt @@ -0,0 +1,6 @@ +RightFinger=Right fingerprint +WrongFinger=Wrong fingerprint +SetMasterFinger=Set master fingerprint +AddFinger=Add fingerprint +ChangeFingers=Manage fingerprints +MasterFinger=Master fingerprint: %s |
