| Häufig
gestellte Fragen
F:
Kann ich ein Skript zum Anklicken und Auswählen von Objekten in der
3D Welt schreiben?
A:
Benutzen Sie die ACTION select_object für Ihre auswählbaren Objekte:
function
select_me()
{
IF (EVENT_TYPE == EVENT_CLICK)
{
MY.LIGHTRANGE = 100; // Ausgewähltes Objekt Aufhellen
// eigene Befehle hier einfügen
}
ELSE
{
MY.LIGHTRANGE = 0;
}
}
ACTION
select_object
{
MY.ENABLE_CLICK = ON;
MY.EVENT = select_me;
}
F:
Mir gefällt der Laser Code aus AUM1, aber wenn ich ihn in Außenregionen
benutze, bricht die Framerate deutlich ein. Was soll ich machen?
A:
Sie müssen nur eine einzige Zeile zum Laser Code hinzufügen,
damit dieser auch wunderbar in Außenregionen funktioniert:
IF
(RESULT !=0)
{
IF (RESULT > 2000) {RESULT = 2000;} // diese Zeile hinzufügen
laser_temp.X=(RESULT)*COS(player.PAN)*COS(CAMERA.TILT)+player.X;
laser_temp.Y=(RESULT)*SIN(player.PAN)*COS(CAMERA.TILT)+player.Y;
laser_temp.Z=(RESULT)*SIN(CAMERA.TILT)+player.Z;
}
Variieren
Sie die 2000 - Sie beeinflusst die Länge des Lasers.
F:
Wie erstelle ich ein Skript zum Anzeigen eines Panels (wie ein Browser)
mit Informationen wie etwa Text, Bildern, Aniamtionen...?
A:
Hier ist ein Beispiel für ein Panel, das in der oberen linken Ecke
erscheint, und sich zur unteren rechten Ecke bewegt (definieren Sie your_pan):
var
camera_switch = 0;
ON_F2
show_camera;
function
show_camera()
{
IF (camera_switch == 0)
{
your_pan.POS_X = -250; // your_pan außerhalb des Bildschirms
setzen
your_pan.POS_Y = -250;
camera_switch = 1;
PLAY_SOUND cameraon_snd, 20;
WHILE (your_pan.POS_X < 0) // das Panel bewegt sich
{
your_pan.POS_X += 20 * TIME;
IF (your_pan.POS_X > 0) {your_pan.POS_X = 0;}
your_pan.POS_Y += 20 * TIME;
IF (your_pan.POS_Y > 0) {your_pan.POS_Y = 0;}
WAIT (1);
}
}
ELSE
{
WHILE (your_pan.POS_X > -250) // zurückbewegen
{
your_pan.POS_X -= 20 * TIME;
IF (your_pan.POS_X < -250) {your_pan.POS_X = -250;}
your_pan.POS_Y -= 20 * TIME;
IF (your_pan.POS_Y < -250) {your_pan.POS_Y = -250;}
WAIT (1);
}
camera_switch = 0;
}
}
F:
Gibt es eine Möglichkeit, die Steuerung so umzubauen, dass die Pfeilhochtaste
vorwärts aus der Sicht entspricht? Links und Rechts löst kein
Seitwärtsbewegen oder Drehen aus, sondern lässt den Spieler direkt
in die gedrückte Richtung blicken und gehen, die Kamera folgt dementsprechend.
Es handelt sich um eine 3rd Person-Ansicht.
A:
Dieses Skript wird Ihr Problem lösen:
var
camera_dist = 300; // Wert nach Gutdünken modifizieren
VIEW
topview // auf 800x600 gesetzt
{
POS_X 0;
POS_y 0;
SIZE_X 800;
SIZE_Y 600;
LAYER 2;
DIAMETER 0; // durch Wände bewegbar
}
function
use_topview
{
topview.VISIBLE = ON;
topview.TILT = -90; // nach unten blicken
WHILE (1)
{
topview.X = player.X;
topview.Y = player.Y;
topview.Z = player.Z + camera_dist;
topview.PAN = player.PAN;
WAIT (1);
}
}
F:
Ich habe einem Gegner eine Aktion zugewiesen (z.B. player_attack). Es existiert
eine patrol-Funktion in den Templates, aber ich will meinen Gegner auf
Patrouille schicken, bis er einen Feind sieht. Wenn er nun den Spieler
erblickt, soll er angreifen.
A:
Sehen Sie sich bitte Action robot1 aus den Templates an:
ACTION
robot1
{
MY._FORCE = 0.7;
MY._FIREMODE = DAMAGE_EXPLODE+FIRE_BALL+HIT_EXPLO+BULLET_SMOKETRAIL+0.20;
MY._HITMODE = 0;
MY._WALKSOUND = _SOUND_ROBOT;
anim_init();
drop_shadow(); // Schatten anfügen
actor_fight();
if(MY.FLAG4 == ON) { CALL patrol; }
}
Sie
müssen FLAG4 des Gegners markieren und er wird das patrouillieren
starten (sofern ein Pfad in der Nähe vorhanden ist) und den Spieler
bekämpfen, sobald er diesen sieht, oder von ihm beschossen wird.
F:
Ist es möglich, ein Musikstück im wav-Format abzuspielen, anstatt
MIDI zu verwenden?
A:
Ja, ich habe mit der A5 Engine erfolgreich 30MB wav Dateien ausprobiert.
F:
Wie kann ich zeitabhängig die Lebenskraft des Spielers verringern?
Ich möchte mit fortlaufender Zeit die Lebenskraft abnehmen lassen.
A:
Benutzen Sie so etwas hier:
function
decrease_health() // in main aufrufen
{
WHILE (1)
{
IF (PLAYER._HEALTH > 50) // Lebenskraftabnahme begrenzen
{
PLAYER._HEALTH -= TIME;
}
WAIT (1);
}
}
F:
Ich arbeite an einem Adventure-Spiel, benutze nur die Lift, Tür und
Schlüssel-Aktionen. Es stört mich wirklich, dass ich nur vier
Schlüssel definieren kann. Vielleicht kann mir einer der WDL-Gurus
helfen?
A:
Die neuesten Templates unterstützen acht Schlüssel. Aktualisieren
Sie Ihre doors.wdl.
F:
Hat schon jemand eine Maus Sensitivitätsroutine geskriptet?
A:
Werfen Sie einen Blick in movement.wdl, dort gibt es eine Variable namens
mouseview, mit dieser kann die Sensitivität verändert werden.
Benutzen Sie einen hslider oder vslider, um mouseview zu ändern.
F:
Ich habe soeben auf A5 upgegradet und die Partikel, die bis jetzt mit MY_FLARE
= ON wirklich gut aussahen, sehen jetzt richtig langweilig aus. Weiß
jemand, warum das so ist?
A:
A5 hat ein besseres Partikelsystem. Der neue MY_ALPHA Parameter bestimmt
die Transparenz der Partikel. Benutzen Sie MY_ALPHA = x (x = 0..100) in
Ihrer Partikelfunktion und Sie werden wieder Ihre gut aussehenden Partikel
erhalten.
F:
Wie verändere ich die Reichweite der Waffen?
A:
_bulletspeed (Skill5) gibt die Geschwindigkeit für Projektile UND
deren Reichweite an (doppelt so groß wie die Geschwindigkeit des
Projektils).
F:
Ich würde gerne alle Actor-Bewegungen in eine Datei speichern (ausgelöst
durch Start/Stop-Tasten). Irgendwelche Ideen? Wie sieht e mit
der
Geschwindigkeit aus, wenn andauernd (sagen wir einmal alle 100 ms) die
X-,Y-,Z- und Rotationskoordinaten in eine datei gespeichert werden?
A:
Ich würde ein Array, das die Spielerpositionen festhaält, definieren.
Wenn das Spiel beendet wird (kurz bevor die Engine beendet wird)
kopieren
Sie einfach den Array-Inhalt in eine Datei.
F:
Wie benutze ich muzzle_vert?
A:
Muzzle_vert wird für Gegner benutzt und erlaubt ihnen, von jedem Vertex
ihres Körpers aus zu schießen. Öffnen Sie Ihren Modelgegner
in MED, Klicken Sie den gewünschten Vertex an und Lesen Sie die Vertexnummer
unten am Bildschirm ab. Fügen Sie dann MY.SKILL32 =
ihre_vertex_nummer;
in der Gegneraktion (robot1 oder so) hinzu.
|