Page 132 - PC Master τ. 282

PC Master
132
if (param==1) {
cChris.LockView(5);
cChris.Animate(0, 5, eOnce);
cChris.UnlockView();
}
}
Να εξηγήσουμε τι σημαίνει κάθε μία
από τις παραπάνω εντολές. Με το
LockView εξασφαλίζουμε ότι η απεικόνι-
ση του χαρακτήρα μας θα παραμείνει στο
View που επιλέγουμε μέχρι να την ελευ-
θερώσουμε με το UnlockView. Αν και η
συγκεκριμένη δυάδα εντολών δεν είναι
απαραίτητη σε αυτό το παράδειγμα, είναι
πιο έξυπνο να τη χρησιμοποιούμε πάντα
από το να ψάχνουμε σε κάθε περίπτωση
αν κάποιο άλλο κομμάτι του κώδικά μας
αναγκάζει το χαρακτήρα να αλλάξει όψη
στο εκάστοτε χρονικό σημείο. Με την
εντολή Animate εκκινούμε το animation
για το View που έχουμε επιλέξει. Οι παρά-
μετροι εντός των παρενθέσεων αντιστοι-
χούν κατά σειρά στο loop του View, την
ταχύτητα του animation και στο γεγονός
ότι θα εκτελεστεί μόνο μία φορά. Αντι-
στοιχίσαμε τις παραπάνω εντολές με τον
αριθμό 1. Αυτό σημαίνει ότι για να εκτε-
λεστούν, αρκεί να γράψουμε την εντολή
run-script 1 σε οποιοδήποτε σημείο κά-
ποιου διαλόγου μας.
ΓΕΓΟΝΟΤΑ ΠΟΥ ΞΕΧΑΣΕ Ο
ΚΩΔΙΚΑΣ
Μία ακόμα εξαιρετικά χρήσιμη συνάρ-
τηση είναι η unhandled_event(). Έχουμε
αναφέρει στο παρελθόν πόσο σημαντικό
είναι το παιχνίδι μας να δίνει απαντήσεις
σε οτιδήποτε σκεφτεί να δοκιμάσει ο
παίκτης, ακόμα κι αν δεν επιτυγχάνει κά-
τι με την ενέργειά του. Στο προηγούμενο
τεύχος δείξαμε πώς επιστρέφουμε δια-
φορετικές προτάσεις για κάθε αντικείμε-
νο που γίνεται use πάνω στον Chris. Κάτι
τέτοιο, όμως, είναι πρακτικά αδύνατο να
γίνει για κάθε hotspot, αντικείμενο και
χαρακτήρα του PC Master’s Saga. Η
unhandled_event() χρησιμοποιείται για
κάθε ενέργεια που κάνει ο παίκτης, χω-
ρίς να έχει προβλεφθεί σε κανένα άλλο
σημείο του κώδικα. Αν, για παράδειγμα,
επιχειρήσετε στο παιχνίδι που δημιουρ-
γούμε να κάνετε Talk σε κάποιο hotspot,
δεν θα πάρετε καμία απάντηση, διότι δεν
έχουμε προβλέψει κάτι τέτοιο. Με αυτή
τη συνάρτηση μπορείτε να δώσετε μία
γενική απάντηση για κάθε ανάλογη περί-
πτωση. Συντάσσεται με τη μορφή
unhandled_event (what, type), όπου
what το είδος του αντικειμένου πάνω
στο οποίο επιδρούμε (hotspot, object,
character, κενό ή inventory) και type ο
cursor που έχουμε επιλεγμένο τη στιγμή
της ενέργειας (look, interact, use, talk
κ.ά.). Συμβουλευτείτε το σχετικό πίνακα
στις οδηγίες για να βρείτε όλους τους
συνδυασμούς τιμών.
Ας δούμε πώς θα βάλουμε στο παιχνίδι
μας μία απάντηση κάθε φορά που κάνου-
με use ένα inventory item πάνω σε οποιο-
δήποτε hotspot. Διαβάζοντας τον πίνακα,
μαθαίνουμε ότι ο συνδυασμός αυτός ορί-
ζεται από τις τιμές what=1 και type=3.
Θυμίζουμε ότι μέχρι στιγμής έχουμε στην
κατοχή μας μόνο δύο αντικείμενα: το iball
και το iBagNickels. Επειδή η συνάρτηση
δεν υπάρχει στο template που δουλεύου-
με, θα τη γράψουμε εμείς. Προσοχή, αυτό
δεν σημαίνει ότι τη δημιουργούμε από
την αρχή, αφού το AGS την αναγνωρίζει
ήδη. Απλώς την ορίζουμε μέσα στο Global
Script. Σε οποιοδήποτε σημείο θέλετε,
φτάνει να μην περικλείεται μέσα σε αγκύ-
λες άλλης συνάρτησης, πληκτρολογήστε
τα παρακάτω:
function unhandled_event(int what,
int type) {
if (what==1) {
if (type==3) {
if (cChris.ActiveInventory==iball)
Display(“You cannot bounce the ball on
that.”);
else if (cChris.ActiveInventory==iBag
Nickels) Display(“You cannot bribe that
with some nickels.”);
else Display(“That doesn’t seem to do
anything there.”);
}
}
}
Αν έχετε παρακολουθήσει προσεκτικά
όλα τα μαθήματα που έχουμε κάνει έως
τώρα, δεν θα δυσκολευτείτε να κατανοή-
σετε τον παραπάνω κώδικα. Δώστε προ-
σοχή στον αριθμό των αγκυλών, γιατί
πρέπει πάντα να κλείνετε ό,τι ανοίγετε.
Μία καλή τακτική για να αποφύγετε τα
σφάλματα είναι να τις μετράτε, ώστε να
βεβαιώνεστε ότι έχετε ίσο αριθμό αριστε-
ρών και δεξιών αγκυλών.
Μπορείτε σε αυτό το σημείο να τρέξετε
το παιχνίδι και να δοκιμάσετε να χρησιμο-
ποιήσετε τα αντικείμενά σας στα hotspots
που έχετε δημιουργήσει.
ΟΙ ΔΑΣΚΑΛΕΣ ΖΟΥΝ
ΑΝΑΜΕΣΑ ΜΑΣ...
Έχουμε μάθει πλέον έναν ικανό αριθμό
από εντολές και λειτουργίες του
Adventure Game Studio, ώστε να επιχει-
ρήσουμε να δημιουργήσουμε ένα κάπως
πιο σύνθετο παράδειγμα. Είναι μια καλή
ευκαιρία για να παρατηρήσουμε πώς
εφαρμόζουμε τα όσα μάθαμε στο παιχνίδι
που θέλουμε να δημιουργήσουμε. Το PC
Master’s Saga διαθέτει μία απλή καθημε-
ρινή ιστορία: Εξωγήινοι έχουν εισβάλει
κρυφά στον πλανήτη μας και ζουν ανάμε-
σά μας με τη μορφή δασκάλων της Τρίτης
Η unhandled_event μας διευκολύνει στον ορι-
σμό αντιδράσεων σε τυχαίες ενέργειες.
Ο διάλογος μεταξύ της δασκάλας και του επιστάτη.
TO TIP
ΤΟΥ ΜΗΝΑ
Ένας απλός αλλά αποτελεσματικός
τρόπος για να φτιάξετε scrolling
credits για το παιχνίδι σας, τα
οποία να περνούν από την οθόνη,
όπως συμβαίνει στις ταινίες, είναι ο
εξής: Φτιάξτε μία πολύ ψηλή εικόνα
(
π.χ. 640x3.000) με μαύρο φόντο
και γράψτε τους τίτλους σας από
πάνω μέχρι κάτω. Δημιουργήστε ένα
δωμάτιο με background την εικόνα
αυτή. Στη συνέχεια, εισαγάγετε ένα
καινούργιο View με μόνο ένα αόρα-
το pixel και φροντίστε όταν ο χαρα-
κτήρας σας μπαίνει στο Credits
Room, να αλλάζει η όψη του σ’ αυτό
το View. Τέλος, βάλτε το χαρακτή-
ρα σας να περπατήσει με την ταχύ-
τητα της αρεσκείας σας από το
ανώτατο στο κατώτατο σημείο του
δωματίου. Ο παίκτης θα παρακολου-
θήσει τα credits σας να κυλούν ομα-
λά στην οθόνη του, χωρίς να του πε-
ράσει από το μυαλό ότι στην ουσία
κοιτάζει ένα pixel που διασχίζει κά-
θετα ένα δωμάτιο.