F: Ich habe mich gewundert wie ich eine feste Kamera erstellen kann. So wie bei einigen Läden in Resident Evil.

A: Benutzen Sie den Code aus recam.wdl und kommentieren Sie folgende Zeilen:

vec_set(temp, player.x);
vec_sub(temp, my.x);
vec_to_angle(re_camera.pan, temp);
 
 

F: Ich bin bereit mein Waffenmodell für eine Egoansicht zu animieren und habe mich gewundert, welchen Einfluss die Animationsphasen auf die Geschwindigkeit haben könnten. Ich wollte so 20 - 30 Frames einbauen, ist das zuviel oder macht es überhaupt etwas aus?

A: Die einzigen Dinge auf die Sie achten sollten sind die Größe der Skin und die Anzahl der Polygone. Sie können beliebig viele Animationsphasen haben - dies gilt für all Ihre Modelle im Spiel.
 
 

F: Ich brauche etwas Hilfe mit den Skripten. Ich will eine Wave-Datei abspielen sobald etwas passiert oder sie einfach irgendwo im Level abspielen lassen.

A: Hier ein kleines Beispiel:

function playit()
{
   play_sound my_snd, 50;
}

action impact_sound
{
    my.enable_impact = on;
    my.event = playit;
}

Um einen Sound irgendwo im Level abzuspielen, kopieren Sie ihn in Ihr Spielverzeichnis („work“ bei der Office Demo), fügen Sie ihn im Wed per Add Sound hinzu, du setzen Sie seine Orientierung, Lautstärke und Reichweite.
 
 

F: Wie kann ich beim einsammeln einer Waffe eine bestimmte Funktion ablaufen lassen?

A: Falls Sie die vorgefertigten Waffenskripte benutzen, müssen Sie folgenden Teil modifizieren:

function gun_pickup()
{
...............................................................
     if(weapon_number == 1) {  weapon1 = ME; weapon_1 = 1;  ON_1 = _gun_select1;  msg.STRING = got_gun1_str; }
     if(weapon_number == 2) {  weapon2 = ME; weapon_2 = 1;  ON_2 = _gun_select2;  msg.STRING = got_gun2_str; }
     if(weapon_number == 3)
     {
          your_function();
          weapon3 = ME;
          weapon_3 = 1;
          ON_3 = _gun_select3;
          msg.STRING = got_gun3_str;
     }
..............................................................
 

Your_function() wird aufgerufen, wenn Sie in diesem Beispiel Waffe Nr. 3 aufheben.
 
 

F: Ich will ein Level erstellen, wo man ein Auto fahren kann. Ich hab keine Ahnung wie man das bewerkstelligt.

A: Die vorgefertigten Skripte enthalten eine einfache Fahrzeugaktion, hängen Sie diese Aktion Ihrem Automodell an und schon kann es losgehen.

action player_drive2
{
    my._MOVEMODE = _MODE_DRIVING;
    my._FORCE = 1.5;
    my._BANKING = 0.1;
    my.__SLOPES = ON;
    my.__TRIGGER = ON;
    my.flag2 = on;
    player_move();
}
 
 

F: Wenn ich ein paar Texturen auf Objekte lege (in diesem Fall marb_41) sieht alles fein aus, solange ich im Wed arbeite. Aber sobald ich builde, sehen die Farben seltsam aus... Ich umgehe dieses Problem, in dem ich die Textur als True Colour speichere, aber wenn ich den Wed verlasse, habe ich das nächste Mal das gleiche Problem erneut.

A: Bei Ihrer Wad-Datei ist der Schreibschutz aktiviert. Klicken Sie mit der rechten Maustaste auf die Datei, und entfernen Sie das Häkchen bei Schreibschutz. Nach einem Klick auf OK sollte dann alles wie gewünscht funktionieren.

 

F: Wenn ich mein Level auf einem anderen PC ohne Preview builde (finales Build), nur zum kompilieren, welche Dateien muss ich dann auf meinen anderen Rechner kopieren, um dort die finale Version zu erhalten?

A: Sie müssen nur yourlevel.wmb auf den anderen Rechner kopieren.

 

F: Wie erstelle ich ein Panel das vor dem Laden eines Levels „Laden...“ auf dem Bildschirm anzeigt?

A: Hier ist der Code, der ein Panel für zwei Sekunden anzeigt.

...........................
loading.visible = on;
load_level (<level1.wmb>);
waitt(32);
loading.visible = off;
..........................
 
 

F: Gibt es eine Möglichkeit, die Aktion eines Knopfes so umzuschreiben, dass er mit einem Rechtsklick aktiviert wird?

A: Erstellen Sie eine While-Schleife und überprüfen Sie dort ob mouse_right = 1 ist. Falls dies zutrifft und sich die Maus über dem Knopf befindet (benutzen Sie zum Überprüfen pointer.x und pointer.y) können Sie die Funktion aufrufen. Ich habe für AUM2 ein ähnliches Skript erstellt; ersetzen Sie mouse_left mit mouse_right und Sie werden bekommen was Sie suchen.
 
 

F: Ich benötige etwas Code für eine Kamera (meine Sicht), die einem Pfad folgt. Ich habe es mit patrol_path versucht, aber es funktioniert nicht mit meinem Entity, nur mit anderen Entities.

A: Als erstes müssen Sie die Standardansicht (Camera) mit camera.visible = off ausschalten. Erstellen Sie eine neue Ansicht, setzen Sie das visible-Flag, erstellen Sie ein Synonym (Zeiger) auf die den Pfad folgende Entity, und verfolgen Sie dessen Bewegung in einer While-Schleife, so wie ich es in cameras.wdl getan habe.
 
 

F: Ich frage mich, wie man eine 3D Vektorposition (der Camera Ansicht) in eine 2D Panelposition umrechnet. Irgendwelche Ideen?

A: Sie können vec_to_screen(Vektor, Ansicht) benutzen - hier ein Beispiel:

vec_set(position,my.x);
vec_to_screen(position,camera);
panel.pos_x = position.x;
panel.pos_y = position.y;