[RVNING av Offe För att man ska slippa programmera allt från grunden varje gång man vill bygga något, finns ett flertal färdiga grundobjekt med alla nödvändiga funktioner och variabler. Standardmonstret /obj/monster.c, standardvapnet /obj/weapon.c, standardprylen /obj/treasure.c, m.fl. kan man klona som de är, för att sedan bestämma deras utseende och egenskaper genom att sätta vissa variabler i dem. Man sätter variablerna genom att anropa några av funktionerna. Om man vill göra ett rum, kan man inte klona /rum/rum.c. Rummet måste ha en egen fil, men för att kunna använda sig av funktionerna i /rum/rum.c skriver man inherit "/rum/rum"; överst i filen. Det kallas att man ärver standardrummet. Man kan göra likadant när man bygger monster, prylar, vapen, skydd, mat, drycker, pengar, gillen, nycklar mm. Om man vill använda sig av de flesta funktionerna i ett standardobjekt, men någon av funktionerna inte gör vad man har tänkt sig, kan man skriva en helt egen sådan funktion. Den ska då ha samma namn som den ursprungliga funktionen, och kommer att anropas i stället för den gamla. Den gamla funktionen sätts alltså ut spel. Om du vill anropa den gamla funktionen i din kod, skriver du ::funktionsnamn(); Det kan vara bra att göra om du bara vill lägga till något, eller bara vill skriva om en del av funktionen. Säg att du ärver två objekt (/obj/ena.c och /obj/andra.c) som båda innehåller den funktion som du planerar att skriva om. För att anropa funktionen i /obj/ena.c skriver du ena::funktionsnamn(); De standardobjekt som du ärver, ärver andra standardobjekt i sin tur, ibland i flera led. Alla objekt måste ärva /std/object.c för att fungera, men att ditt objekt ärver /std/object.c kan också betyda att ditt objekt ärver ett objekt, som ärver ett objekt, som ärver ett objekt, som ärver /std/object.c... Här ser du några vanliga standardobjekt och vilka objekt de ärver: Standardobjektet... ärver... som ärver. ----------------------------------------------------------------- /rum/rum.c - /std/object.c ----------------------------------------------------------------- /obj/monster.c - /obj/living.c - /std/object.c /std/namn.c /obj/libfun.c ----------------------------------------------------------------- /obj/weapon.c - /std/object.c /obj/armour.c /std/namn.c /obj/treasure.c /obj/mat.c /obj/alko_dryck.c /obj/saft_dryck.c ----------------------------------------------------------------- /obj/pengar.c - /std/object.c /std/namn.c /obj/libfun.c ----------------------------------------------------------------- /obj/player.c - /bin/functions/kommandon.c /secure/variabler.c /obj/living.c - /std/object.c /std/namn.c /obj/libfun.c -----------------------------------------------------------------