local EditorProp_spawn_id = { Type="def", Filter="Collectible", Set="SetSpawnObject" };
>
local EditorProp_spawn_id = { Type="def", Filter="Collectible", Set="SetSpawnObject" };
local EditorProps = [{ Name = "$spawnId$", Type="def", Filter="MyFilterFunction" Set="SetSpawnObject" },...local EditorProps =
{
spawn_id = { Name="$SpawnID$", Type="def", EditorHelp="$SpawnIDToolTip$", Filter=..., Priority=... }
}> Die spawn_id bezieht sich damit immer auf eine gleichnamige lokale Variable. Das ist wichtig, weil man Eigenschaften auf fuer verschiedene Variablen wiederverwenden kann und weil der Name fuer verschachtelte Proplists und Arrays gebraucht wird.
public func Definition(def)
{
// EditorActions
if (!def.EditorActions) def.EditorActions = {};
def.EditorActions.Test = { Name="$Test$", Command="OnTrigger(nil, nil, true)" };
// UserActions
UserAction->AddEvaluator("Action", "$Name$", "$SetActive$", "$SetActiveDesc$", "sequence_set_active", [def, def.EvalAct_SetActive], { Target = { Function="action_object" }, Status = { Function="bool_constant", Value=true } }, { Type="proplist", Display="{{Target}}: {{Status}}", EditorProps = {
Target = UserAction->GetObjectEvaluator("IsSequence", "$Name$"),
Status = new UserAction.Evaluator.Boolean { Name="$Status$", EditorHelp="$SetActiveStatusHelp$" }
} } );
// EditorProps
if (!def.EditorProps) def.EditorProps = {};
def.EditorProps.active = { Name="$Active$", Type="bool", Set="SetActive" };
def.EditorProps.finished = { Name="$Finished$", Type="bool", Set="SetFinished" };
def.EditorProps.trigger = { Name="$Trigger$", Type="enum", OptionKey="Trigger", Set="SetTrigger", Priority=110, Options = [
{ Name="$None$" },
{ Name="$PlayerEnterRegionRect$", EditorHelp="$PlayerEnterRegionHelp$", Value={ Trigger="player_enter_region_rect", Rect=[-20, -20, 40, 40] }, ValueKey="Rect", Delegate={ Type="rect", Color=0xff8000, Relative=true, Set="SetTriggerRect", SetRoot=true } },
{ Name="$PlayerEnterRegionCircle$", EditorHelp="$PlayerEnterRegionHelp$", Value={ Trigger="player_enter_region_circle", Radius=25 }, ValueKey="Radius", Delegate={ Type="circle", Color=0xff8000, Relative=true, Set="SetTriggerRadius", SetRoot=true } },
{ Name="$ObjectEnterRegionRect$", EditorHelp="$ObjectEnterRegionHelp$", Value={ Trigger="object_enter_region_rect", Rect=[-20, -20, 40, 40] }, Delegate={ Name="$ObjectEnterRegionRect$", EditorHelp="$ObjectEnterRegionHelp$", Type="proplist", EditorProps = {
ID = { Name="$ID$", EditorHelp="$IDHelp$", Type="def", Set="SetTriggerID", SetRoot=true },
Rect = { Type="rect", Color=0xff8000, Relative=true, Set="SetTriggerRect", SetRoot=true }
} } },
{ Name="$ObjectEnterRegionCircle$", EditorHelp="$ObjectEnterRegionHelp$", Value={ Trigger="object_enter_region_circle", Radius=25 }, Delegate={ Name="$ObjectEnterRegionCircle$", EditorHelp="$ObjectEnterRegionHelp$", Type="proplist", EditorProps = {
ID = { Name="$ID$", EditorHelp="$IDHelp$", Type="def", Set="SetTriggerID", SetRoot=true },
Radius = { Type="circle", Color=0xff8000, Relative=true, Set="SetTriggerRadius", SetRoot=true }
} } },
{ Name="$ObjectCountInContainer$", EditorHelp="$ObjectCountInContainerHelp$", Value={ Trigger="contained_object_count", Count=1 }, Delegate={ Name="$ObjectCountInContainer$", EditorHelp="$ObjectCountInContainerHelp$", Type="proplist", EditorProps = {
Container = { Name="$Container$", EditorHelp="$CountContainerHelp$", Type="object" },
ID = { Name="$ID$", EditorHelp="$CountIDHelp$", Type="def", EmptyName="$AnyID$" },
Count = { Name="$Count$", Type="int", Min=1 },
Operation = { Name="$Operation$", EditorHelp="$CountOperationHelp$", Type="enum", Options = [
{ Name="$GreaterEqual$", EditorHelp="$GreaterEqualHelp$" },
{ Name="$LessThan$", EditorHelp="$LessThanHelp$", Value="lt" }
] }
} } },
{ Name="$Interval$", EditorHelp="$IntervalHelp$", Value={ Trigger="interval", Interval=60 }, ValueKey="Interval", Delegate={ Name="$IntervalTime$", Type="int", Min=1, Set="SetIntervalTimer", SetRoot=true } },
{ Name="$GameStart$", Value={ Trigger="game_start" } },
{ Name="$PlayerJoin$", Value={ Trigger="player_join" } },
{ Name="$PlayerRemove$", Value={ Trigger="player_remove" } },
{ Name="$GoalsFulfilled$", Value={ Trigger="goals_fulfilled" } },
{ Group="$ClonkDeath$", Name="$AnyClonkDeath$", Value={ Trigger="any_clonk_death" } },
{ Group="$ClonkDeath$", Name="$PlayerClonkDeath$", Value={ Trigger="player_clonk_death" } },
{ Group="$ClonkDeath$", Name="$NeutralClonkDeath$", Value={ Trigger="neutral_clonk_death" } },
{ Group="$ClonkDeath$", Name="$SpecificClonkDeath$", Value={ Trigger="specific_clonk_death" }, ValueKey="Object", Delegate={ Type="object", Filter="IsClonk" } },
{ Name="$Construction$", Value={ Trigger="construction" }, ValueKey="ID", Delegate={ Type="def", Filter="IsStructure", EmptyName="$Anything$" } },
{ Name="$Production$", Value={ Trigger="production" }, ValueKey="ID", Delegate={ Type="def", EmptyName="$Anything$" } },
] };
def.EditorProps.condition = new UserAction.Evaluator.Boolean { Name="$Condition$" };
def.EditorProps.action = new UserAction.Prop { Priority=105 };
def.EditorProps.action_progress_mode = UserAction.PropProgressMode;
def.EditorProps.action_allow_parallel = UserAction.PropParallel;
def.EditorProps.deactivate_after_action = { Name="$DeactivateAfterAction$", Type="bool" };
def.EditorProps.check_interval = { Name="$CheckInterval$", EditorHelp="$CheckIntervalHelp$", Type="int", Set="SetCheckInterval", Save="Interval" };
}// Methode jetzt:
def.EditorProps.active = { Name="$Active$", Type="bool", Set="SetActive" };
// Mit Arrays:
def.EditorProps[GetLength(def.EditorProps)] = { Name="$Active$", Type="bool", Get="active", Set="SetActive" };var CountedID = { Type = "proplist", Display = "{{count}}x{{id}}", DefaultValue = { count=1, id=nil }, Elements = {
Name = "ID list entry",
EditorProp_count = { Type = "int", Min = 1 },
EditorProp_id = { Type = "def" } } };var IDList = { Name = "ID list", Type = "array", Display = 3, Elements = CountedID };EditorProp_construction_list = IDList;


/* Automatically created objects file */
func InitializeObjects()
{
var Goal_Construction001 = CreateObject(Goal_Construction, 459, 98);
Goal_Construction001->AddConstruction(Flagpole, 1);
Goal_Construction001->AddConstruction(Windmill, 5);
return true;
}

>Bauplaene: Keine, Alle, Alle ausser ID-Liste oder nur ID-Liste
>Wäre sowieso mal cool schnell auf einen Schlag alle Baupläne freischalten zu können.
Objects.ocd/System.c4g zu verschieben
>Aber die Skripte dann einfach zu ändern geht dann nicht mehr weil Welten dann betroffen sind und vielleicht Wissen verfügbar wird was eine Runde total einfach macht.
>Doch, weil es bisher nur 1 Person gab der die Welten geändert hat und das war ich, in der globale System.ocg gibt es eben diese Kontrolle nicht.
GivePlayerStandardKnowledge() heißen
local EditorProp_Name = { Type = "string", AsyncGet = "GetName", Set = "SetName" };local EditorProp_targetdoor = { Name="$Target$", Type="object", Filter="IsSwitchTarget" };
local EditorProp_Name definieren, in der ich festlegen kann, was dort angezeigt wird? Was, wenn ich mehrere solcher Eigenschaften haben möchte? Ah, das beantwortet sich von selbst. EditorProp_ ist das Keyword, der Rest muss dann einfach nur eindeutig sein. Coole Sache!
(hier ein Text in TT)(hier ein Text, nachdem tt wieder geschlossen wurde)(und nochmal ein Text in tt). Ok, im vorhergehenden Post lag es wohl daran, dass Unterstriche verwendet wurden.
Powered by mwForum 2.29.7 © 1999-2015 Markus Wichitill