F:
Wie mache ich gute Texturen ohne Ränder?
A:
Laden Sie sich das Freeware Tool namens sTile herunter:
http://harmware.com/stile.htm
F:
Ich weiß, dass man die Werte für Auflösung und Farbtiefe
mit “video_switch” ändern kann, aber wie kann ich die Grundeinstellungen
vom System wieder herstellen?
A:
Es gibt keine Grundeinstellungen – Sie setzen sie am Anfang mit den Variablen
video_mode und video_depth. Falls Ihr Spiel mit den Werten video_mode =
7 (800 x 600 Pixel) und video_depth = 16 (16 Bit = 65536 Farben) startete,
können Sie diese Werte mit diesem Code wiederherstellen:
function
restore_settings()
{
video_swith (7, 16, 0);
}
on_r
= restore_settings;
F:
Wie kann ich einen Level Block in einer bestimmten Größe definieren,
zum Beispiel 20 x 30 x 40?
A:
Starten Sie WED und fügen Sie einen kleinen Würfel in Ihrem Level
ein – er hat die Größe 64 x 64 x 64 Quants. Rechnen Sie dann
aus 20 : 64 = 0,31; 30 : 64 = 0,47; 40 : 64 = 0,62. Wählen Sie “Eigenschaften”
des Würfels und klicken Sie auf “Position”. Geben Sie die Werte für
“Scale” ein und Sie erhalten Ihren 20 x 30 x 40 Würfel.
F:
Können Sie mir ein Beispiel für draw_textmode geben?
A:
Sehen Sie sich diesen Code an:
starter
init_text()
{
draw_textmode("Times", 2, 30, 40); // choose the font "Times New Roman",
italic, 30 points, transparency factor = 40
while (1)
{
draw_text("Geronimo!", 300, 200, vector(250, 250, 250)); // draw white
text (rgb = 250, 250, 250) at (300,200) pixels
wait (1);
}
}
F:
Ich habe ein Skybox Model, das dem Spieler folgt, wenn er läuft. Weil
diese kleiner ist als das Level kann der Spieler keine Objekte sehen, die
außerhalb der Box sind. Läuft der Computer dadurch schneller
oder wird alles außerhalb der Box trotzdem gerendert?
A:
Alle Objekte außerhalb der Skybox werden gerendert, aber Sie können
clip_range auf einen Wert setzen, der sie entfernt. Wenn Ihre Skybox einen
Durchmesser von 20.000 Quants hat, schreiben Sie diese Zeile in Ihre Main
Funktion:
clip_range
= 12000; // sphere_diameter * 0.6
F:
Ist es möglich, dass ein Model auf Fog #1 reagiert und ein anderes
auf Fog #2?
A:
Nein, das ist nicht möglich. Sie können allerdings einem der
Models farbiges Licht geben, um seine Farbe zu ändern:
action
color_changer
{
my.ambient = 100;
my.light = on;
my.bright = on;
my.lightrange = 0;
my.lightgreen = 0;
my.lightblue = 0;
while (1)
{
my.lightred = 230 + random(25); // small red flicker
wait (1);
}
}
F:
Wie kann ich den Spieler in das nächste Level befördern, wenn
er alle Missionsziele erreicht hat?
A:
Der Code unten startet das nächste Level genau dann, wenn Sie 5 oder
mehr Kisten aufgesammelt haben, indem Sie sie berühren:
var boxes_collected = 0;
string office2_wmb = <office2.wmb>; // next level
action
get_ammoboxes
{
while (player == null) {wait (1);}
my.passable = on;
while (vec_dist (player.x, my.x) > 100) {wait (1);}
my.invisible = on;
boxes_collected += 1;
}
starter
next_level()
{
while (boxes_collected < 5) {wait (1);} // need to get at least 5 boxes
while (key_any) {wait (1);} // wait until all the keys are released on
the keyboard
level_load (office2_wmb);
}
F:
Wie kann ich etwas mit mehreren Schaltern aktivieren? Sagen wir, ich möchte,
dass sich eine Tür öffnet, wenn der erste Knopf auf “Aus” steht,
der zweite auf “Ein” und der Dritte wieder auf “Aus”.
A:
Benutzen Sie ein Models mit zwei Skins und dem Code unten; geben Sie den
Knöpfen, die eingeschaltet sein müssen die Action button_on und
den anderen button_off. Klicken Sie auf einen Knopf, um ihn umzuschalten:
var
number_of_buttons = 0;
var
button_status = 0;
function
change_status()
{
my.skin %= 2;
my.skin += 1; // my.skin should be 1 or 2
if (my.skill1 == 1) // this button should be set to "on"
{
if (my.skin == 2) // if it is set to on
{
button_status += 1; // add 1 to button_status
}
else // if it is set to off
{
button_status -= 1; // subtract 1 from button_status
}
}
if (my.skill1 == 1000) // this button should be set to off
{
if (my.skin == 1) // if it is set to off
{
button_status += 1; // add 1 to button_status
}
else // if it is set to on
{
button_status -= 1; // subtract 1 from button_status
}
}
}
starter
check_status()
{
sleep (1);
while (button_status != number_of_buttons) {wait (1);}
// call the function that opens your door here
beep;
}
action
button_on
{
number_of_buttons += 1;
my.skin = 1; // set to "off" at game start
my.skill1 = 1; // that's a button that needs to be set to on
my.enable_click = on; // click it to change its status
my.event = change_status;
}
action
button_off
{
number_of_buttons += 1;
button_status += 1; // "off" is ok for this button
my.skin = 1; // set to "off" at game start
my.skill1 = 1000; // that's a button that needs to be set to off
my.enable_click = on; // click it to change its status
my.event = change_status;
}