Hoe zit het met.. properties en permissies
Door Doesbo
Een groot probleem bij het maken van generieke objecten (waar
andere personen een kindje van kunnen maken) is dat men niet zo
goed weet hoe sommige properties werken met permissies, namelijk
het r, het w en het c bit. Ik heb er zelf ook een poos over
gedaan eer ik het echt begreep en ging controleren of mijn
generieke objecten wel goed werkten. Vandaar dit stukje.
Het r bit
Deze is nog redelijk simpel: kan een property gelezen worden
of niet.Standaard als je een property maakt staat ie op r. Soms
wil je dat mensen het niet kunnen lezen echter, bijvoorbeeld een
lijst met woorden voor een spelletje waarin men woorden moet
raden, dan kan je het prop -r zetten (voor het veranderen zie
onderaan)
Het w bit
ok deze is nog te bevatten: kan iemand anders dan de eigenaar
het property veranderen. Als jij een property aanmaakt ben jij de
eigenaar, maar als je wilt dat andere mensen ook in het property
schrijven VAN DE COMMANDOREGEL (bijvoorbeeld met @set obj.prop to
...) dan kun je 'm op w zetten. Dit wordt niet zo vaak gedaan
echter, en dat heeft ook een beetje met het volgende bit te
maken.
Het c bit
Dit is het bit dat voor de meeste mensen het moelijkst is om
te bevatten, omdat de documentatie wat te moeilijk is, of te
eenzijdig. Het c bit heet in het engels 'Change ownership in
descendants' en het gaat erover wie eigenaar van een property
wordt als een kindje wordt gemaakt. Blijf jij dat (de eigenaar
van de parent), of wordt het de eigenaar van het kindje die het property krijgt? Het c bit staat standaard aan
als je een property maakt. Als iemand dus een kindje maakt van
een object van jou, wordt hij ook eigenaar van het property. Een
@show van een prop .prive op een object #18595 kan er dan zo
uitzien:
#18595.prive
Owner: Hilfiger! (#22141)
Permissions: rc
Value: 0
#18595 is in dit geval een bas, en de eigenaar ervan is
Hilfiger! maar de parent heb ik gemaakt (generiek
muziekinstrument). Je ziet dat Hilfiger! de eigenaar is. Maar wat
als ik nou bij het maken van het property het
bitje c weg had gehaald?
#18595.prive
Owner: Doesbo (#22382)
Permissions: r
Value: 0
Van hetzelfde kindje dat Hilfiger! heeft gemaakt blijk ik nog
steeds eigenaar van het property. Maar waarom zou je nu eigenaar
willen blijven van properties? Het antwoord is vrij simpel. Soms
programmeer je een klein programmatje (een verb) op zo'n generiek
object die zo'n property wil wijzigen. Als je het verb
programmeert ben jij de eigenaar ervan, dus wie het ook uitvoert,
hij doet het onder JOUW permissies. Het struikelblok is dus dat
als iemand met een verb van JOU een property van HEM (dus met het
c bit aan) wil wijzigen, er een errormessage verschijnt. Goede
voorbeelden zijn de generieke drank van Q (#5524) en het
generieke irritante object van Jools (#1428). Deze objecten
werken helaas niet goed, dus zijn zo goed als nutteloos, behalve voor de slimme bouwvakker die bekijkt welke
properties er op zo'n object zitten, en die op hun kindje van de
commandoregel wijzigen (bijv. met @set).
Dus kort samengevat: als je wilt dat een property gewijzigd
kan worden door een verb van jou, moet jij eigenaar van het
property zijn, moet het c bit dus uitstaan. Wil je dat men een
property van de commandoregel kan wijzigen voor kindjes, moeten
de eigenaars van de kindjes eigenaar van het property zijn, mag
het c bit dus aan blijven staan.
O ja, permissies van properties wijzig je natuurlijk met
@chmod. 2 voorbeelden:
@chmod #9697.switch -c
=> om een prop van een c bit te ontdoen.
@chmod #18340.actions +w
=> om het w bit aan te zetten
|