blob: 5be1bef5ca2f029a675f5d4975cebd6f2d53534d [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001P_MATERIAL
2NAME:
3 P_MATERIAL "material"
4
5DEFINIERT IN:
6 <thing/material.h>
7
8BESCHREIBUNG:
9 Mapping mit prozentualen Anteilen von Materialien, aus denen ein Objekt
10 besteht.
11
12BEMERKUNGEN:
13 Bei SetProp kann man zu Vereinfachung auch ein einzelnes Material oder
14 ein Array aus Materialien angeben. Die Anteile werden dann
15 gleichmaessig verteilt.
16
17BEISPIELE:
18 // 100% Eis
19 SetProp(P_MATERIAL, MAT_ICE);
20 // QueryProp(P_MATERIAL) -> ([MAT_ICE:100])
21
22 // 50% Eis, 50% Misc-Holz
23 SetProp(P_MATERIAL, ({ MAT_ICE, MAT_MISC_WOOD }));
24 // QueryProp(P_MATERIAL) -> ([MAT_ICE:50, MAT_MISC_WOOD: 50])
25
26 // 60% Eis, 40% Misc-Holz
27 SetProp(P_MATERIAL, ([ MAT_ICE: 60, MAT_MISC_WOOD: 40 ]));
28
29 // 100% Papier
30 SetProp(P_MATERIAL, MAT_PAPER);
31 // QueryProp(P_MATERIAL) -> ([MAT_PAPER:100])
32
33 // 50% Silber, 50% Gold
34 SetProp(P_MATERIAL, ({MAT_SILVER, MAT_GOLD}))
35 // QueryProp(P_MATERIAL) -> ([MAT_SILVER:50,MAT_GOLD:50])
36
37 // ein weiser Schmied, der was daraus macht:
38 int i;
39 string *mat, mname, mgroup;
40 mat=m_indices(ob->QueryProp(P_MATERIAL));
41 i=sizeof(mat);
42
43 write("Der Schmied sagt: "+ob->Name(WER)+" besteht aus ...\n");
44 while(i--) {
45 // den Namen erkennen/aussprechen:
46 // Materialien werden allgemein ganz schlecht erkannt (zu 5%), aber
47 // alles aus Metall wird zu +100% gut erkannt ...
48 mname=MATERIALDB->MaterialName(mat[i], WER,
49 ({5, ([MATERIAL_SYMMETRIC_RECOGNIZABILITY:
50 ({MATGROUP_METAL, 100})])}));
51
52 // und nur Metalle analysieren ...
53 if(MATERIALDB->MaterialGroup(([mat[i]:100]),MATGROUP_METAL)>=100) {
54 int j;
55 string *mgr;
56 mgr=MATERIALDB->GetMatMembership(mat[i]);
57 j=sizeof(mgr);
58 mgroup=" gehoert zu ";
59 while(j--) {
60 mgroup+=MATERIALDB->GroupName(mgr[j]);
61 if(j>0) mgroup+=", ";
62 }
63 } else mgroup=" kenne ich nicht";
64 printf("%-12.12s: %s\n",mname, mgroup);
65 }
66
67
68SIEHE AUCH:
69 Konzepte: material, materialerkennung
70 Grundlegend: /sys/thing/material.h
71 Methoden: QueryMaterial(), QueryMaterialGroup(), MaterialList(),
72 Listen: AllMaterials(), AllGroups(), Dump()
73 materialliste, materialgruppen
74 Master: AddMaterial(), ConvMaterialList(), MaterialGroup(),
75 GroupName(), MaterialName(),
76 GetGroupMembers(), GetMatMembership()
77 Sonstiges: P_MATERIAL_KNOWLEDGE
78
797. Mai 2004 Gloinson