F:
Wie kann ich es machen, dass, wenn ich eine CD berühre, ich ins nächste
Level befördert werde?
A:
Hier ist ein Schnipsel:
string nextlevel_wmb = <next.wmb>;
function beam_me_up();
action
take_me_there // attach it to the cd
{
my.enable_impact = on;
my.event = beam_me_up;
}
function
beam_me_up()
{
wait (1);
level_load (nextlevel_wmb);
}
F:
Ich habe die Standard Version von 3D Gamestudio, und kann deshalb keine
Terrains einfügen. Ich könnte Modelle verwenden; gibt es einen
Weg mein Terrain nicht passable zu machen, damit mein Spieler drauf gehen
kann?
A:
Machen Sie Ihr Terrain passable und erstellen Sie eine einfache, unsichtbare
Block-Struktur darunter.
F:
Wie kann ich Charaktere mit Skin-Animationen machen (ein Charakter blinzelt
mit den Augen und öffnet den Mund)?
A:
Erstelle verschiedene Skins für diesen Charakter und füge sie
dem Modell im MED hinzu. Benutzen Sie diesen Code, um Ihren Charakter zu
animieren:
action
imtalking
{
while (1)
{
while (I am supposed to talk) // put your stuff here
{
my.skin = 1;
waitt (3);
my.skin = 2;
wait (3)
my.skin = 3;
waitt (3);
}
wait (1);
}
}
F:
Kann mir jemand ein Skript geben, dass eine Entity mit Hilfe der Pfeiltasten
bewegt werden kann, aber nicht die Kamera bewegt?
A:
Der einfache Weg wäre, einen neuen View zu definieren und ihn sichtbar
zu machen. Schreibe diese Zeile am Anfang der office.wdl:
view camera2{ }
und die folgenden Zeilen am Ende der main function:
camera.visible
= off;
camera2.size_x
= screen_size.x;
camera2.size_y
= screen_size.y;
camera2.pos_x
= 0;
camera2.pos_y
= 0;
camera2.visible
= on;
F:
Wie ändere ich den Cursor, wenn ich mit der Maus über einen NPC
fahre?Können Sie mir helfen?
A:
Hier ist der Code:
bmap
cursor_normal = <normal.pcx>;
bmap
cursor_changed = <changed.pcx>;
function change_cursor();
action
npc
{
my.enable_touch = on;
my.enable_release = on;
my.event = change_cursor;
}
function
change_cursor()
{
wait (1);
while (event_type == event_touch)
{
mouse_map = cursor_changed;
wait (1);
}
while (event_type == event_release)
{
mouse_map = cursor_normal;
wait (1);
}
}
F:
Ich benutze den "pathcamera" code aus Aum6. Die Kamera soll stoppen, wenn
sie den letzten Wegpunkt erreicht. Wie mache ich das?
A:
Nehmen Sie die xyz-Koordinaten als Maß für den letzten Pfad
und dann überschreiben Sie while (1) in cutcam.wdl mit:
while (my.x < x_coord && my.y < y_coord && my.z > z_coord)
Bitte
nhemen Sie zur Kenntnis, dass Sie evtl. < mit > und > mit < vertauschen
müssen, ganz abhängig von Ihrem Pfad.
F:
Ich möchhte, dass die Einschusslöcher in der Wand bleiben. Ist
das möglich?
A:
Zuerst müssen wir diese Zeile in weapons.wdl ändern:
DEFINE kMaxBulletHole 100; -> DEFINE kMaxBulletHole 1000; // 1000 bullet holes now
Überschreiben Sie die Function bullet_hole() hiermit:
function
bullet_hole()
{
// check for maximum bullet holes at any time
if(bullet_hole_index >= kMaxBulletHole)
{
bullet_hole_index = 0;
}
// check to see if its already in use
temp = h_bullet_hole_array[bullet_hole_index];
if(temp != 0)
{
// remove old hole
p_bullet_hole_temp = ptr_for_handle(temp);
remove(p_bullet_hole_temp);
}
// assign this as the new value in the array
h_bullet_hole_array[bullet_hole_index] = handle(me);
my.skill4 = bullet_hole_index; // save index for removal
bullet_hole_index += 1; // increament index
my.transparent = on;
my.flare = on;
my.passable = on;
my.oriented = on;
vec_to_angle(my.pan,normal); // rotate to target normal
}
F:
Ich habe ein paar Modelle und ich möcht, dass sie gehen und die walkframes
benutzen; Ich habe auch einen Charakter, der eine "stillgestanden"-Animation
hat. Haben Sie den richtigen Code für mich?
A:
Schauen Sie sich die enemy_fight Action in dieser AUM-Ausgabe an - der
Code beinhaltet gehen, still stehen, angreifen und sterben.
F:
Wie kann man überprüfen, ob der Spieler ene gewisse Straße
betreten hat?
A:
Nehmen Sie die X- und Y-Koordinaten (min und max) der Straße in Wed
vergleiche die Werte mit der Position des Spielers:
function
street_checker() // start it in main
{
while (1)
{
if (player.x > street_min_x && player.x < street_max_x &&
player.y > street_min_y && player.y < street_max_y)
{
// the player has entered the street
// add your code here
}
else
{
// the player is outside the street
// add your code here
}
wait (1);
}
}