From fa5403dccd986022b2a849e2078f043c3225348a Mon Sep 17 00:00:00 2001 From: Markus Mittendrein Date: Mon, 2 Jan 2017 19:33:41 +0100 Subject: Initial --- Items.c4d/Sensors.c4d/CodeInput.c4d/DefCore.txt | 19 +++ Items.c4d/Sensors.c4d/CodeInput.c4d/Graphics.png | Bin 0 -> 3811 bytes Items.c4d/Sensors.c4d/CodeInput.c4d/Names.txt | 2 + Items.c4d/Sensors.c4d/CodeInput.c4d/Script.c | 138 +++++++++++++++++++++ .../Sensors.c4d/CodeInput.c4d/StringTblDE.txt | 9 ++ .../Sensors.c4d/CodeInput.c4d/StringTblUS.txt | 9 ++ 6 files changed, 177 insertions(+) create mode 100644 Items.c4d/Sensors.c4d/CodeInput.c4d/DefCore.txt create mode 100644 Items.c4d/Sensors.c4d/CodeInput.c4d/Graphics.png create mode 100644 Items.c4d/Sensors.c4d/CodeInput.c4d/Names.txt create mode 100644 Items.c4d/Sensors.c4d/CodeInput.c4d/Script.c create mode 100644 Items.c4d/Sensors.c4d/CodeInput.c4d/StringTblDE.txt create mode 100644 Items.c4d/Sensors.c4d/CodeInput.c4d/StringTblUS.txt (limited to 'Items.c4d/Sensors.c4d/CodeInput.c4d') diff --git a/Items.c4d/Sensors.c4d/CodeInput.c4d/DefCore.txt b/Items.c4d/Sensors.c4d/CodeInput.c4d/DefCore.txt new file mode 100644 index 0000000..224a95a --- /dev/null +++ b/Items.c4d/Sensors.c4d/CodeInput.c4d/DefCore.txt @@ -0,0 +1,19 @@ +[DefCore] +id=CI7I +Name=Code Input +Version=4,9,5 +Category=C4D_Object|C4D_SelectMaterial|C4D_SelectKnowledge|C4D_SelectHomebase +Width=10 +Height=13 +Offset=-5,-6 +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/CodeInput.c4d/Graphics.png b/Items.c4d/Sensors.c4d/CodeInput.c4d/Graphics.png new file mode 100644 index 0000000..f4be8c6 Binary files /dev/null and b/Items.c4d/Sensors.c4d/CodeInput.c4d/Graphics.png differ diff --git a/Items.c4d/Sensors.c4d/CodeInput.c4d/Names.txt b/Items.c4d/Sensors.c4d/CodeInput.c4d/Names.txt new file mode 100644 index 0000000..d238d54 --- /dev/null +++ b/Items.c4d/Sensors.c4d/CodeInput.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Passworteingabe +US:Code input diff --git a/Items.c4d/Sensors.c4d/CodeInput.c4d/Script.c b/Items.c4d/Sensors.c4d/CodeInput.c4d/Script.c new file mode 100644 index 0000000..bd5af5c --- /dev/null +++ b/Items.c4d/Sensors.c4d/CodeInput.c4d/Script.c @@ -0,0 +1,138 @@ +#strict 2 +#include SN7I + +local inputMode, code, authedPlayers; + +func Init() +{ + inputMode = []; + authedPlayers = []; +} + +func Triggers() { return [["$RightCode$"], ["$WrongCode$"]];} + +func ControlThrow(object caller) +{ + if(!code) + { + PlayerMessage(GetController(caller), "$NoCodeSet$", this); + } + else + { + QueryCode(caller, 0); + } + return ClearCom(caller); +} + +func ControlThrowDouble() { return ControlThrow(...); } + +func QueryCode(object caller, int mode) +{ + var plr = GetController(caller); + inputMode[plr] = [mode, caller]; + CallMessageBoard(this, false, ["$EnterCode$", "$EnterCurrentCode$", "$EnterNewCode$", "$EnterCode$"][mode], plr); +} + +func InputCallback(string answer, int plr) +{ + if(!inputMode[plr]) + { + return _inherited(answer, plr, ...); + } + else if(answer != "") + { + var mode = inputMode[plr][0]; + var caller = inputMode[plr][1]; + inputMode[plr] = 0; + if(mode == 0 || mode == 3) + { + authedPlayers[GetPlayerID(plr)] = answer == code; + if(mode == 0) + { + Trigger(answer != code, caller); + } + else if(mode == 3) + { + if(answer == code) + { + _Setup(caller); + } + else + { + Trigger(1, caller); + } + } + ShowSuccess(answer == code, caller); + if(answer != code) + { + ScheduleCall(this, "QueryCode", 1, 0, caller, mode); + } + } + else if(mode == 1) + { + ShowSuccess(answer == code, caller); + ScheduleCall(this, "QueryCode", 1, 0, caller, 1 + (answer == code)); + if(answer != code) + { + Trigger(1, caller); + } + } + else if(mode == 2) + { + code = answer; + authedPlayers = []; + authedPlayers[GetPlayerID(plr)] = true; + PlayerMessage(plr, "$CodeChanged$", this); + } + } +} + +func ShowSuccess(bool success, object caller) +{ + if(!success) + { + Sound("Error"); + PlayerMessage(GetController(caller), "$TxtWrongCode$", this); + CreateParticle("PSpark", -2, -3, 0, 0, 50, RGB(192, 0, 0)); + } + else + { + CreateParticle("PSpark", -2, -3, 0, 0, 50, RGB(0, 192, 0)); + } +} + +func _Setup(object caller) +{ + if(code && !authedPlayers[GetPlayerID(GetController(caller))]) + { + QueryCode(caller, 3); + } + else + { + return _inherited(caller, ...); + } +} + +func Setup(object caller, int& menuIndex) +{ + if(GetController(caller) == GetOwner()) + { + AddMenuItem("$ChangeCode$", "ChangeCode", GetID(), caller, 0, caller, 0, C4MN_Add_ForceNoDesc); + ++menuIndex; + } + return true; +} + +func ChangeCode(id id, object caller) +{ + _Setup(caller); + SelectMenuItem(2, caller); + + QueryCode(caller, 1 + !code); +} + +func ChangeDesc(id id, object caller, bool right) +{ + inputMode[GetController(caller)] = 0; + return _inherited(id, caller, right, ...); +} diff --git a/Items.c4d/Sensors.c4d/CodeInput.c4d/StringTblDE.txt b/Items.c4d/Sensors.c4d/CodeInput.c4d/StringTblDE.txt new file mode 100644 index 0000000..64671f3 --- /dev/null +++ b/Items.c4d/Sensors.c4d/CodeInput.c4d/StringTblDE.txt @@ -0,0 +1,9 @@ +RightCode=Richtiges Passwort +WrongCode=Falsches Passwort +EnterCode=Passwort eingeben +EnterCurrentCode=Aktuelles Passwort eingeben +EnterNewCode=Neues Passwort eingeben +NoCodeSet=Es ist noch kein Passwort gesetzt! +CodeChanged=Passwort erfolgreich gesetzt. +ChangeCode=Passwort ändern +TxtWrongCode=Falsches Passwort!|Neuer Versuch… diff --git a/Items.c4d/Sensors.c4d/CodeInput.c4d/StringTblUS.txt b/Items.c4d/Sensors.c4d/CodeInput.c4d/StringTblUS.txt new file mode 100644 index 0000000..eecdb4f --- /dev/null +++ b/Items.c4d/Sensors.c4d/CodeInput.c4d/StringTblUS.txt @@ -0,0 +1,9 @@ +RightCode=Right code +WrongCode=Wrong code +EnterCode=Enter code +EnterCurrentCode=Enter current code +EnterNewCode=Enter new code +NoCodeSet=No code is set! +CodeChanged=Code changed successfully. +ChangeCode=Change code +TxtWrongCode=Wrong code!|Try again… -- cgit v1.2.3-54-g00ecf