Fragen & Antworten       

  
F: Ich möchte eine animierte Waffe mit mehreren Frames gebrauchen, wie im Spiel Deus Ex oder Solder of Fortune, aber ich weiß nicht wie. In weapon.wdl kann ich nur eine Waffe mit einem Frame gebrauchen.

A. Das ist das wdl welches das Problem löst:

var weapon_delay = 1; // Pause zwischen den Zyklen der Animation 

function _gun_anim ()  // CALL aus der Aktion gun standard 
{  
     WHILE (1)  
     {  
            IF (KEY_CTRL == 1)  
           {  
                 MY.FRAME = 1;  
                 WHILE (MY.FRAME < 16)  
                 {  
                        MY.FRAME += TIME;  
                        IF (MY.FRAME > 15)  
                        {  
                              MY.FRAME = 16;  
                        }  
                       WAITT weapon_delay;  
                 }  
      }  
     WAIT 1;  
}  
  
  
F: Mein Problem ist, dass nach dem das Spiel läuft, verringert sich das Volumen auf null, so dass die midi Dateien nicht gebraucht werden können.

A: Einige Tonplatten (besonders ältere Creative Labs) haben Probleme mit den internen Mixer oder Driver. Wenn du einen Creative AWE 64 hast, versuche upgrade zum Driver zu machen. Um das Problem zu untersuchen, starte engine und nacher drücke die Taste Alt+Tab um zurück zum Desktop zu kommen. Dann doppelklicken auf das Icon des Lautsprechers und siehe den Wert des Slider für das Volumen MIDI; wenn sein Wert steigt, müsstest du die Musik hören.

F: Ich brauche wdl für einen Feind, welcher stirbt und verschwindet, und nach sich Gesundheit hinterlässt.  

A: Du musst war.wdl ändern
  
function state_die()  
{  
     …………..  
     MY.PASSABLE = ON;   // body remains  
}  

es wird so aussehen 

SKILL temp_robot {} // die Koordinaten des Roboters; füge sie am Anfang der Datei ein   

function state_die()  
{  
     …………..  
     //MY.PASSABLE = ON;   // kommentiere diese Linie!   

     // neuer Code von hier angefangen   
     temp_robot.X = MY.X;  
     temp_robot.Y = MY.Y;  
     temp_robot.Z = MY.Z;  
     REMOVE MY;  
     CREATE  <health.mdl>, temp_robot, add_health; // nicht vergiss deine Datei einzufügen health.mdl  
}  

function _hincrease () // wird gemacht wenn der Player die Gesundheit durchführt   
{  
      YOU = PLAYER;  
      YOUR._HEALTH += 50; // die Gesundheit des Players steigt um 50  
      REMOVE ME; // eliminiere die Gesundheit   
}  

function add_health () // er wird laufen um die Gesundheit zu kreieren
{  
      MY.ENABLE_IMPACT = ON; // sensibel auf den Zusammenstoß  
      MY.EVENT = _hincrease;  
}  
  
F: Wenn ich einen Zylinder wähle, den ich gerade hinzugefügt habe, wenn ich im Modus rotate bin, dann wird er gedreht. Gehe ich dann in den Modus scale, wird er wieder gedreht. Ist das ein bug?

A: Das passiert, wenn eine oder mehrere Tasten blockiert sind (z.B. Shift). Wenn du einen bug triffst, minimiere das Fenster Wed, dann maximiere und dann müsstest du das Objekt scalieren können.  

F: Ist es möglich dass der Player verletzt wird, wenn er etwas berührt? Wie kann ich erfahren, wie stark er verletzt ist?

A: Platziere ein Modell / sprite/ wmb auf dein Niveau, dann füge die Aktion add_health von oben hinzu (wechsele function mit action damit du die Liste der Aktionen wed einsehen kannst. Du musst function_hincrease () gebrauchen, um die Gesundheit des Players zu verringern; wechsele die Linie wie unten

YOUR._HEALTH -= 50;  // die Gesundheit verringert sich um 50  

F: Weiss jemand, wie man Regen/Schnee kreiert in verschiedenen Niveaus, so dass es draußen schneit, wenn man in einen Raum eintritt nicht regnet, aber man kann den Regen durchs Fenster sehen?

A: Platziere eine Entität in wed außerhalb des Gebäudes, dann füge die Aktion snow hinzu: 

var temp_snow = 0;  
BMAP snow_map, <snow.pcx>; // dein bitmap für Regen/ Schnee   

ACTION snow  
{  
       MY.INVISIBLE = ON;  
      WHILE (1)  
      {  
               temp_snow.X = MY.X + 200 - RANDOM(400); // die quadratische Zone mit der Seite 400 quants   
               temp_snow.Y = MY.Y + 200 - RANDOM(400);  
               temp_snow.Z = MY.Z;  
               EMIT 1, temp_snow, _snow;  
               WAIT 1;  
      }  
}  

function  _snow ()  
{  
      IF (MY_AGE == 0)  
      {  
              MY_FLARE = ON;  
              MY_MAP = snow_map;  
              MY_SPEED.X = 0;  
              MY_SPEED.Y = 0;  
              MY_SPEED.Z = -10; // die Geschwindigkeit des Schneiens   
              MY_SIZE = 50 + RANDOM(30);  
      }  
      IF (MY_AGE >= 200)  // die unsichtbaren Tropfen werden eliminiert 
      {  
              SET MY_ACTION, NULL;  
      }  
}  
  

F:Wenn ich ein Modell in wed platziere, stoßt er durch den Fußboden. Ich habe die Herkunft in die Mitte des Modells platziert. Wenn ich die dem Modell zugefügte Aktion eliminiere, dann stoßt er nicht mehr durch den Fußboden. Was mache ich falsch?

A: Deine Aktion hat etwas von:

MY.Z -= A; // A ist ein Wert, ein Skill oder ein Ausdruck  

Dein Modell dringt durch den Fußboden, weil er  die Zusammenstöße nicht ausfindig macht. Versuche move in deinen Aktionen zu benutzen, anstelle die Koordinate Z der Entität zu verändern, oder verringere etwas von A:

MY.Z -= A - 2; // wähle den passenden Wert  
  

F: Ich habe einige Gebäude mit mehreren Zimmern; ist es nützlich die Wände zu überschneiden oder einfach nebeneinander zu platzieren?

A:Wenn du die Wände überschneidest, kannst du damit rechnen dass sich die Portals um 3-10% verringern, je nach der Geometrie deines Niveaus.
  

F: Wie kann ich die Geschwindigkeit für walk und run wie in Q2 oder Unreal vergrößern? Ich benutze den wdl aus template für die Aktion meines Players.

A: Schau am Anfang der Datei movement.wdl und vergrößere eine oder mehrere Werte:

var strength[3] = 5,4,75; // default ahead, side, jump strength  

Du kannst die Taste strenght.X+=5 auf der Konsole betätigen um die Geschwindigkeit zu verdoppeln, bevor du movement.wdl veränderst; genauso kannst für strenght.Y und strenght.Z vorgehen. Finde die besten Werte, dann verändere movement.wdl.