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/CardReader.c4d/DefCore.txt | 20 +++ Items.c4d/Sensors.c4d/CardReader.c4d/Graphics.png | Bin 0 -> 2119 bytes .../Sensors.c4d/CardReader.c4d/GraphicsCard.png | Bin 0 -> 176 bytes .../CardReader.c4d/Keycard.c4d/DefCore.txt | 21 +++ .../CardReader.c4d/Keycard.c4d/Graphics.png | Bin 0 -> 2238 bytes .../CardReader.c4d/Keycard.c4d/Names.txt | 2 + .../CardReader.c4d/Keycard.c4d/Overlay.png | Bin 0 -> 2580 bytes .../CardReader.c4d/Keycard.c4d/Script.c | 109 ++++++++++++ Items.c4d/Sensors.c4d/CardReader.c4d/Names.txt | 2 + Items.c4d/Sensors.c4d/CardReader.c4d/Overlay.png | Bin 0 -> 325 bytes .../Sensors.c4d/CardReader.c4d/OverlayCard.png | Bin 0 -> 174 bytes Items.c4d/Sensors.c4d/CardReader.c4d/Script.c | 193 +++++++++++++++++++++ .../Sensors.c4d/CardReader.c4d/StringTblDE.txt | 7 + .../Sensors.c4d/CardReader.c4d/StringTblUS.txt | 7 + 14 files changed, 361 insertions(+) create mode 100644 Items.c4d/Sensors.c4d/CardReader.c4d/DefCore.txt create mode 100644 Items.c4d/Sensors.c4d/CardReader.c4d/Graphics.png create mode 100644 Items.c4d/Sensors.c4d/CardReader.c4d/GraphicsCard.png create mode 100644 Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/DefCore.txt create mode 100644 Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Graphics.png create mode 100644 Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Names.txt create mode 100644 Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Overlay.png create mode 100644 Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Script.c create mode 100644 Items.c4d/Sensors.c4d/CardReader.c4d/Names.txt create mode 100644 Items.c4d/Sensors.c4d/CardReader.c4d/Overlay.png create mode 100644 Items.c4d/Sensors.c4d/CardReader.c4d/OverlayCard.png create mode 100644 Items.c4d/Sensors.c4d/CardReader.c4d/Script.c create mode 100644 Items.c4d/Sensors.c4d/CardReader.c4d/StringTblDE.txt create mode 100644 Items.c4d/Sensors.c4d/CardReader.c4d/StringTblUS.txt (limited to 'Items.c4d/Sensors.c4d/CardReader.c4d') diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/DefCore.txt b/Items.c4d/Sensors.c4d/CardReader.c4d/DefCore.txt new file mode 100644 index 0000000..c202c8f --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/DefCore.txt @@ -0,0 +1,20 @@ +[DefCore] +id=CR7I +Name=Card Reader +Version=4,9,5 +Category=C4D_Object|C4D_SelectMaterial|C4D_SelectKnowledge|C4D_SelectHomebase +Width=10 +Height=5 +Offset=-5,-2 +Mass=10 +Value=5 +Components=METL=1; +Picture=0,5,64,64 +Vertices=1 +VertexFriction=100 +Grab=2 +Collectible=1 +MaxUserSelect=10 +Rebuy=1 +NoPushEnter=1 +ColorByOwner=1 diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/Graphics.png b/Items.c4d/Sensors.c4d/CardReader.c4d/Graphics.png new file mode 100644 index 0000000..0fea303 Binary files /dev/null and b/Items.c4d/Sensors.c4d/CardReader.c4d/Graphics.png differ diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/GraphicsCard.png b/Items.c4d/Sensors.c4d/CardReader.c4d/GraphicsCard.png new file mode 100644 index 0000000..9e67d34 Binary files /dev/null and b/Items.c4d/Sensors.c4d/CardReader.c4d/GraphicsCard.png differ diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/DefCore.txt b/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/DefCore.txt new file mode 100644 index 0000000..c626851 --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/DefCore.txt @@ -0,0 +1,21 @@ +[DefCore] +id=KC7I +Name=Keycard +Version=4,9,5 +Category=C4D_Object|C4D_SelectMaterial|C4D_SelectKnowledge|C4D_SelectHomebase +MaxUserSelect=10 +Width=8 +Height=5 +Offset=-4,-3 +Value=10 +Mass=10 +Components=METL=1; +Picture=0,5,64,48 +Vertices=2 +VertexX=-4,4 +VertexY=0,0 +VertexFriction=60,60 +Rebuy=1 +Collectible=1 +Rotate=1 +ColorByOwner=1 diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Graphics.png b/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Graphics.png new file mode 100644 index 0000000..2d9c553 Binary files /dev/null and b/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Graphics.png differ diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Names.txt b/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Names.txt new file mode 100644 index 0000000..ea9589e --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Schlüsselkarte +US:Key card \ No newline at end of file diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Overlay.png b/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Overlay.png new file mode 100644 index 0000000..acdeab5 Binary files /dev/null and b/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Overlay.png differ diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Script.c b/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Script.c new file mode 100644 index 0000000..bd604c3 --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/Keycard.c4d/Script.c @@ -0,0 +1,109 @@ +#strict 2 + +local readers; +local color; + +func Initialize() +{ + readers = []; + ResetColor(); +} + +func ResetColor() +{ + SetColor(RGB(255, 255, 255)); +} + +func OnOwnerChanged() +{ + SetColorDw(color); +} + +func HasReader(object reader) +{ + return GetIndexOf(reader, readers) != -1; +} + +func CleanRemovedReaders() +{ + ArrayEraseItem(readers, 0, true); +} + +func AddReader(object reader) +{ + if(!HasReader(reader)) + { + readers[GetLength(readers)] = reader; + CleanRemovedReaders(); + if(GetLength(readers) == 1) + { + SetColor(reader->GetColor()); + } + } + return true; +} + +func RemoveReader(object reader) +{ + ArrayEraseItem(readers, reader); + CleanRemovedReaders(); + if(color == reader->GetColor()) + { + if(GetLength(readers) > 0) + { + SetColor(readers[0]->GetColor()); + } + else + { + ResetColor(); + } + } + return true; +} + +func SetColor(int newColor) +{ + color = newColor; + SetColorDw(newColor); +} + +func Selection() +{ + if(GetLength(readers)) + { + var first = true, descList = ""; + for(var reader in readers) + { + if(reader) + { + Contained()->CreateSelectMark()->MarkObject(reader, 35); + var desc = reader->GetDescription() || ""; + if(!first) + { + descList = Format("%s, ", descList); + } + descList = Format("%s· %s", descList, reader->GetColor(), desc); + first = false; + } + } + if(descList != "") + { + PlayerMessage(GetOwner(Contained()), "%s: %s", Contained(), SN7I->TargetText(), descList); + } + } +} + +func Entrance(object container) +{ + if(GetOCF(container) & OCF_CrewMember) + { + Selection(); + } +} + +func GetColor() +{ + return color; +} + +func IsAnvilProduct() { return true; } diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/Names.txt b/Items.c4d/Sensors.c4d/CardReader.c4d/Names.txt new file mode 100644 index 0000000..971f587 --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/Names.txt @@ -0,0 +1,2 @@ +DE:Kartenleser +US:Card reader diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/Overlay.png b/Items.c4d/Sensors.c4d/CardReader.c4d/Overlay.png new file mode 100644 index 0000000..0112730 Binary files /dev/null and b/Items.c4d/Sensors.c4d/CardReader.c4d/Overlay.png differ diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/OverlayCard.png b/Items.c4d/Sensors.c4d/CardReader.c4d/OverlayCard.png new file mode 100644 index 0000000..3e3205f Binary files /dev/null and b/Items.c4d/Sensors.c4d/CardReader.c4d/OverlayCard.png differ diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/Script.c b/Items.c4d/Sensors.c4d/CardReader.c4d/Script.c new file mode 100644 index 0000000..bdf4d62 --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/Script.c @@ -0,0 +1,193 @@ +#strict 2 +#include SN7I + +local color, controllingCard; + +func Init() +{ + SetColor(HSL(Random(255), 255, 127)); + var card = CreateContents(KC7I); + card->AddReader(this); + Collection2(card); +} + +func SetColor(int newColor) +{ + color = newColor; + SetColorDw(color); +} + +func GetColor() { return color; } + +func OnOwnerChanged() +{ + SetColorDw(color); +} + +func Triggers() { return [["$RightCard$"], ["$WrongCard$"]];} + +func ControlThrow(object caller) +{ + var card, success; + if(card = FindCard(caller, success)) + { + if(!controllingCard) + { + ShowSuccess(success); + Trigger(!success, caller); + } + else + { + PlayerMessage(GetController(caller), "$CardLoaded$", this); + } + } + else if(controllingCard) + { + GetCard(0, caller); + } + return ClearCom(caller); +} + +func ControlThrowDouble() { return ControlThrow(...); } + +func ShowSuccess(bool success) +{ + if(!success) + { + Sound("Error"); + CreateParticle("PSpark", -5, -1, 0, 0, 50, RGB(192, 0, 0)); + } + else + { + CreateParticle("PSpark", -5, -1, 0, 0, 50, RGB(0, 192, 0)); + } +} + +func Setup(object caller, int& menuIndex) +{ + if(controllingCard && Contained(controllingCard) == this) + { + AddMenuItem("$GetCard$", "GetCard", KC7I, caller, 0, caller, 0, C4MN_Add_ForceNoDesc | C4MN_Add_ImgObject, controllingCard); + ++menuIndex; + var success, card = FindCard(caller, success); + if(card && !card->HasReader(this)) + { + selectCaller = caller; + AddMenuItem("$AddReader$", "AddReader", KC7I, caller, 0, card, 0, C4MN_Add_ForceNoDesc | C4MN_Add_ImgObject, card); + ++menuIndex; + } + if(ObjectCount2(Find_ID(KC7I), Find_Func("HasReader", this), Find_Exclude(controllingCard))) + { + AddMenuItem("$RemoveReader$", "RemoveReader", KC7I, caller, 0, caller, 0, C4MN_Add_ForceNoDesc | C4MN_Add_ImgObject, controllingCard); + ++menuIndex; + } + } + else + { + var success; + FindCard(caller, success); + if(success) + { + AddMenuItem("$LoadCard$", "LoadCard", KC7I, caller, 0, caller, 0, C4MN_Add_ForceNoDesc | C4MN_Add_ImgColor, RGB(255, 255, 255)); + ++menuIndex; + } + } + return true; +} + +func GetCard(id id, object caller) +{ + if(controllingCard) + { + Exit(controllingCard); + caller->Collect(controllingCard); + } +} + +func LoadCard(id id, object caller) +{ + var success; + var card = FindCard(caller, success); + if(success) + { + Enter(this, card); + } + _Setup(caller); + SelectMenuItem(2, caller); +} + +func AddReader(id id, object card) +{ + card->AddReader(this); +} + +func RemoveReader(id id, object caller) +{ + if(controllingCard) + { + controllingCard->RemoveReader(this); + GetCard(id, caller); + } +} + +func FindCard(object container, bool& success) +{ + var card; + success = false; + for(var i = 0; i < ContentsCount(0, container); ++i) + { + var content = Contents(i, container); + if(GetID(content) == KC7I) + { + if(content->HasReader(this)) + { + card = content; + success = true; + break; + } + else if(!card) + { + card = content; + } + } + } + return card; +} + +func Collection2(object obj) +{ + if(!controllingCard && obj->GetID() == KC7I && obj->HasReader(this)) + { + controllingCard = obj; + SetGraphics("Card", this, GetID(), GFX_Overlay, GFXOV_MODE_Base); + SetClrModulation(obj->GetColor(), this, GFX_Overlay); + } +} + +func ContentsDestruction(object obj) { return Ejection(obj); } + +func Ejection(object obj) +{ + if(obj == controllingCard) + { + SetGraphics(0, this, 0, GFX_Overlay); + controllingCard = 0; + } +} + +func SetupCondition(object caller) +{ + if(controllingCard) + { + return true; + } + + var success; + FindCard(caller, success); + return success; +} + +func CalcDefValue() +{ + return Value(GetID()) + GetValue(0, KC7I); +} diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/StringTblDE.txt b/Items.c4d/Sensors.c4d/CardReader.c4d/StringTblDE.txt new file mode 100644 index 0000000..07d8964 --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/StringTblDE.txt @@ -0,0 +1,7 @@ +RightCard=Richtige Karte +WrongCard=Falsche Karte +GetCard=Karte herausnehmen +AddReader=Leser in die Karte schreiben +RemoveReader=Leser aus Karte löschen +LoadCard=Karte hineinstecken +CardLoaded=Es steckt bereits eine Karte! diff --git a/Items.c4d/Sensors.c4d/CardReader.c4d/StringTblUS.txt b/Items.c4d/Sensors.c4d/CardReader.c4d/StringTblUS.txt new file mode 100644 index 0000000..84c5a17 --- /dev/null +++ b/Items.c4d/Sensors.c4d/CardReader.c4d/StringTblUS.txt @@ -0,0 +1,7 @@ +RightCard=Right card +WrongCard=Wrong card +GetCard=Take card +AddReader=Add reader to card +RemoveReader=Remove reader from card +LoadCard=Put card in +CardLoaded=There is already a card inserted -- cgit v1.2.3-54-g00ecf