Metro icon De Digitale Metro
Naar de Metro Voor beginners Programmeren Infrastructuur Sociaal Links
   
  Metrologo Hoe zit het met.. properties en permissies  

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