PC Master
134
έχουμε στο inventory μας, πρώτα το παίρ-
ναμε στο χέρι μας κι έπειτα κάναμε κλικ
πάνω στον Chris με αυτό. Ο κώδικας που
είχαμε γράψει ήταν ο παρακάτω:
function ifolder_Interact()
{
if (player.Room==11) Display(“You are
already reading the folder!”);
//
Αν το έχεις ήδη ανοιχτό, δεν γίνεται
τίποτα
else {
gInventory.Visible=false;
//
Κλείσε το inventory πριν αλλάξεις
δωμάτιο
player.ChangeRoom(11);
}
}
Επειδή δεν προσδιορίζουμε ποιος ακρι-
βώς είναι ο παίκτης, μπορούμε να πάρου-
με αυτό το κομμάτι του κώδικα αυτούσιο
και να το μεταφέρουμε στην αντίδραση
που θέλουμε να έχει το παιχνίδι όταν κά-
νουμε use το folder πάνω στην Euphemia.
Μέσα στη συνάρτηση on_key_press(), εί-
χαμε ορίσει να ανοίγει ο χάρτης όποτε πα-
τάμε το πλήκτρο Μ με την εξής πρόταση:
if (keycode==GetASCIINumber(M))
cChris.ChangeRoom(15);
Επειδή θέλουμε η χρήση του χάρτη να
γίνεται και από τους δύο χαρακτήρες, θα
την αλλάξουμε σε:
if (keycode==GetASCIINumber(M))
player.ChangeRoom(15);
Υπάρχουν και οι περιπτώσεις που θέ-
λουμε να λαμβάνουμε διαφορετικό απο-
τέλεσμα ανάλογα με τον παίκτη που χει-
ριζόμαστε. Ας ξεκινήσουμε από το πιο
απλό: Τι συμβαίνει όταν κάνουμε Look
πάνω στον Chris; Μέχρι σήμερα, είχαμε
ορίσει μία σειρά από απαντήσεις με τη
βοήθεια μιας μεταβλητής που έπαιρνε
ακέραιες τιμές από 0 έως 4, σκεπτόμενοι
ότι ο ίδιος ο Chris εξέταζε τον εαυτό του.
Πλέον όμως οφείλουμε να καλύψουμε και
την περίπτωση να τον εξετάζουμε ως
Euphemia. Συνεπώς, ο κώδικάς μας δια-
μορφώνεται ως εξής:
function cChris_Look()
{
if (player.ID==1) {
int randdescr=Random(4);
if (randdescr==0) Display(“Although
you are having a bad hair day, you look
more or less presentable.”);
else if (randdescr==1) Display(“You
are Chris Bucketbird, a columnist at the
hair styling magazine Comb U Press.”);
else if (randdescr==2) {
Display(“You feel pretty and witty and
bright!”);
Display(“Unfortunately, this is hardly
what you look like.”);
}
else if (randdescr==3) Display(“You
need a mirror to do that.”);
else Display(“It’s not the eye of
Sauron, don’t abuse it!”);
}
else Display(“I guess you can say that
he is fairly easy on the eyes.”);
}
Στην περίπτωσή μας, ο Chris έχει τη με-
ταβλητή ID=1. Μπορείτε να δείτε ποιος
αριθμός αντιστοιχεί σε κάθε χαρακτήρα
καθώς αναγράφεται αριστερά από το
όνομα στο Characters του Project Tree.
Όταν λοιπόν κάνουμε Look πάνω στον
Chris, το παιχνίδι θα εξετάσει αν εκείνη
τη στιγμή χειριζόμαστε τον ίδιον. Αν ναι,
θα εκτελέσει το πρώτο τμήμα του κώδι-
κα, δίνοντας ίδιες απαντήσεις όπως και
προηγουμένως. Σε διαφορετική περίπτω-
ση, θα σημαίνει πως έχουμε υπό τον
έλεγχό μας την Euphemia, άρα θα μας
δώσει την περιγραφή που αναγράφεται
στο τελευταίο else. Αντιλαμβάνεστε πως
αντίστοιχες προσθήκες θα χρειαστεί να
κάνετε και στο Use cursor, ενώ στο Talk
θα πρέπει να υπολογίσετε και όλους
τους πιθανούς διαλόγους που θα πραγ-
ματοποιηθούν μεταξύ των δύο χαρακτή-
ρων, ανάλογα με το χρονικό σημείο, την
τοποθεσία στην οποία βρίσκονται και
όσα έχουν καταφέρει μέχρι τότε στο παι-
χνίδι. Διαισθάνομαι πως ήδη τρέφετε με-
γαλύτερο σεβασμό για τη δουλειά όσων
adventures σάς παρέδιδαν το χειρισμό
περισσότερων του ενός ατόμου.
ΕΝΑΛΛΑΓΗ ΧΑΡΑΚΤΗΡΩΝ ΜΕ
ΕΝΑ ΠΛΗΚΤΡΟ
Είμαστε έτοιμοι να δώσουμε στον παί-
κτη τη δυνατότητα να εναλλάσσεται μετα-
ξύ του Chris και της Euphemia με το πάτη-
μα ενός κουμπιού, ας πούμε του F11. Κατ’
αρχάς, είπαμε ότι δεν θέλουμε αυτό να
μπορεί να γίνει από την αρχή, επομένως
πρώτα θα ορίσουμε μία μεταβλητή ελέγ-
χου, η οποία θεωρούμε ότι ενεργοποιείται
σε ένα καθορισμένο χρονικό σημείο, ας
πούμε όταν ο Chris καταφέρνει να εισέλ-
θει στο διαστημόπλοιο. Κάνουμε διπλό
κλικ από το Project Tree στο Global
variables και στη συνέχεια δεξί κλικ σε κε-
νό σημείο και Add new variable. Την ονο-
μάζουμε SpaceshipEntered και την ορίζου-
με ως bool με αρχική τιμή FALSE. Στο
Global Script, βρίσκουμε ξανά τη συνάρτη-
ση on_key_press() και πληκτρολογούμε:
if ((SpaceshipEntered==1) &&
(
keycode==GetASCIINumber(F11))) {
if (player.ID==1) cEup.SetAsPlayer();
else cChris.SetAsPlayer();
}
Σώστε το παιχνίδι σας και επιχειρήστε
να το τρέξετε για να διαπιστώσετε αν τα
TO TIP ΤΟΥ ΜΗΝΑ
Από ένα σημείο και έπειτα, καταντάει κουραστικό να φέρνουμε τους χαρακτή-
ρες μας στο ίδιο δωμάτιο όποτε θέλουμε να ανταλλάξουμε αντικείμενα. Οι παί-
κτες σας θα το εκτιμήσουν πολύ αν τους δοθεί η επιλογή να το κάνουν από από-
σταση. Μπορείτε να βάλετε ένα εικονίδιο στη menu bar για αυτήν τη δουλειά, ή
απλά να προσθέσετε έναν συνδυασμό πλήκτρων στην on_key_press(), ας πούμε
το Ctrl+G, ή γιατί όχι και τα δύο. Όταν πατάτε το εικονίδιο ή τα πλήκτρα, θα με-
ταφέρεται το active item του ενός χαρακτήρα στο inventory του άλλου.
Κοιτάμε τον Chris, αλλά μέσα από ποια μάτια;