Metro icon De Digitale Metro
Naar de Metro Voor beginners Programmeren Infrastructuur Sociaal Links
   
  Metrologo Hoe zit het met.. makkelijk featureverbs programmeren  

Hoe zit het met.. makkelijk featureverbs programmeren
Door Doesbo

Als je nieuwe bouwvakker bent in de metro wil je het vast erg graag: je eigen leuke verbjes programmeren op een eigen feature. Pest iemand met irritante mensen of objecten die binnenkomen, spoel iemand door de WC, of maak iets om iemand helemaal te vereren! Maar hoe?

1. Het feature maken!
Het Mama Feature voor iedereen is $feature. Dus je eigen feature daarvan maak je met:

@maak $feature genaamd "naam van je feature"

Verzin wel een leukere naam natuurlijk! Nu hebben we een feature, met een eigen objectnummer, onthou dat want we gaan het later gebruiken. Nu nog geen leuk verb! Tekstvoorbeeldjes van het programmeren van verbs zijn er genoeg, ik volsta hier door even twee verbs uit te leggen die je kunnen helpen als je een verb maakt dat betrekking op iemand heeft. Dat houdt in dat je <verb> <persoon> kunt tikken, bijv. 'taart doesbo'. Als je zo'n verb wilt maak je het aan met:

@verb #nummer:verb any none none rxd

Ik leg even uit:

@verb het commando om een verb te maken
#nummer het nummer van je feature. Ik zou dus #4002 moeten nemen
: een dubbele punt geeft aan dat het om verbs gaat
verb naam van het verb, in het voorbeeld geval dus 'taart'
any 3 aanduidingen voor voorzetsels, any none none betekent gewoon dat er maar op een iets wordt gecheckt, bijv. een none speler
rxd Readable, eXecutable, en Debugging aan. Oftewel: het verb is te lezen, men kan het van je feature uitvoeren, en als er iets misgaat krijg je altijd een error te zien.

Heb je je eerste verb al? En heb je eigenlijk je feature al toegevoegd met @addfeature? Mooi! Dan gaan we nu proggen met 2 utilities, alle 2 van de hand van Knuffel!

Maak van de eerste regel van je verb:

wie = $knuf_utils:match_player(dobjstr);

Dit zorgt ervoor dat het verb weet wie hij te grazen moet nemen. Als je in zou tikken 'taart doesbo' dan weet de Metro al wel dat hij 'doesbo' moet hebben (da's dobjstr) maar niet wat het objectnummertje daarvan is. Dit utility zoekt het voor je op, en 'wie' wordt dat nummer, in dit geval #4001. Het utility werkt ook goed als je een naam vergeet of je tikt een verkeerde naam.

Een handig utility om teksten voor elkaar af te beelden is $knuf_utils:print, hier zie je hoe:

$knuf_utils:print(player, wie, "Een stukkie tekst.");

Dit laat 'Een stukkie tekst.' zien op het scherm van jezelf, de speler op wie je het uitvoert, en op iedereen die bij jou en/of die speler in de kamer zitten. Maar er is nog meer!

$knuf_utils:print(player, wie, "%1n gooit bij %2n een taart in het gezicht!");

Je ziet dat er nu opeens %1n en %2n in het verb staan. Het print utility checkt daarop en vult als substituten de namen van resp player (jezelf) en wie (het slachtoffer in). Stel je voor dat ik dat taart verb dus heb en ik gooi een taart naar Hiske (met 'taart hi'), en bij Hiske in de kamer staat Knuffel, dan ziet het er voor hun zo uit:

<Doesbo> Je gooit bij Hiske een taart in het gezicht!
<Hiske> Doesbo gooit bij je een taart in het gezicht!
<Knuffel> Doesbo gooit bij Hiske een taart in het gezicht!

Zo ziet het er voor iedereen netjes uit. Het is soms wel even zoeken naar de juiste formulering zodat de zin voor iedereen klopt, let daar dus op. Je kunt ook met nog meer van die checkjes werken, hier zijn ze:

%1n naam
%1s hij/zij/het
%1p zijn/haar/zijn
%1z zich
%1o hem/haar/het
%1r zichzelf

Deze zijn erg handig voor het behandelen van mannelijke en vrouwelijke spelers. Hier zie je een mooi klein verbje wat zou moeten werken:

@verb #nummer:taart any none none rxd
@edit #nummer:taart
wie = $knuf_utils:match_player(dobjstr);
$knuf_utils:print(player, wie, "%1n gooit bij %2n een taart in %2p gezicht!");

Zo wordt het programmeren van een feature dus nog een stuk makkelijker...

Wil je uitgebreidere info over featureprogrammeren? Tik in de Metro: lees #15357