From fa5403dccd986022b2a849e2078f043c3225348a Mon Sep 17 00:00:00 2001 From: Markus Mittendrein Date: Mon, 2 Jan 2017 19:33:41 +0100 Subject: Initial --- .../Sensors.c4d/FingerprintSensor.c4d/DefCore.txt | 19 +++ .../Sensors.c4d/FingerprintSensor.c4d/Graphics.png | Bin 0 -> 3430 bytes .../Sensors.c4d/FingerprintSensor.c4d/Names.txt | 2 + .../Sensors.c4d/FingerprintSensor.c4d/Script.c | 172 +++++++++++++++++++++ .../FingerprintSensor.c4d/StringTblDE.txt | 6 + .../FingerprintSensor.c4d/StringTblUS.txt | 6 + 6 files changed, 205 insertions(+) create mode 100644 Items.c4d/Sensors.c4d/FingerprintSensor.c4d/DefCore.txt create mode 100644 Items.c4d/Sensors.c4d/FingerprintSensor.c4d/Graphics.png create mode 100644 Items.c4d/Sensors.c4d/FingerprintSensor.c4d/Names.txt create mode 100644 Items.c4d/Sensors.c4d/FingerprintSensor.c4d/Script.c create mode 100644 Items.c4d/Sensors.c4d/FingerprintSensor.c4d/StringTblDE.txt create mode 100644 Items.c4d/Sensors.c4d/FingerprintSensor.c4d/StringTblUS.txt (limited to 'Items.c4d/Sensors.c4d/FingerprintSensor.c4d') 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 new file mode 100644 index 0000000..83ff04b Binary files /dev/null and b/Items.c4d/Sensors.c4d/FingerprintSensor.c4d/Graphics.png differ 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 -- cgit v1.2.3-54-g00ecf