Drehende Waffen im UT-Style für HL2DM

Da ich schon oft gefragt wurde, wie die drehenden Waffen in dm_biohazard genau funktionieren schreibe ich dazu mal schnell ein Tutorial.
Zunächst ein mal die benötigten Entities:

  • game_player_equip
  • trigger_multiple
  • prop_dynamic
  • func_rotating
  • env_sprite
  • ambient_generic

Das Herzstück ist eigentlich das game_player_equip, das durch den trigger_multiple vom Spieler getriggert wird und der Spieler so die gewünschte Waffe beim Drüberlaufen erhält. Nun muss der Spieler ja noch sehen ob die Waffe gerade da ist oder nicht. Das wird über ein prop_dynamic und als parent ein unsichtbares func_rotating geregelt. Die jeweilige Waffe wird über das prop_dynamic eingebunden. Von jeder Waffe gibt es ein Worldmodel, ich nehme mal als Beispiel die Armbrust (models/Weapons/w_crossbow.mdl). Das func_rotating ist einfach ein Brush mit der Nodraw Textur und außerdem natürlich "not solid", es soll einfach nur dafür sorgen, dass sich die Waffe dreht, mehr nicht :). Nun zum trigger_multiple, der die ganzen Outputs regelt. Berührt der Spieler den trigger_multiple müssen a) das game_player_equip getriggert werden (Spieler bekommt die Waffe), b) die Waffe, die sich dreht muss ausgeblendet werden, c) Nach einer Zeit x muss die Waffe wieder eingeblendet werden und d) das ambient_generic wird dabei getriggert um den typischen "item-respawn-sound" aus HL2DM abzuspielen - damit der Spieler auch akustisch bemerken kann, dass die Waffe gerade wieder gekommen.

Das war's eigentlich schon. Oh ich vergaß das env_sprite, das ist eigentlich nur aus optischen Gründen da, rein theoretisch könnte man auch das mit der Waffe ein und ausblenden lassen.

Da das ganze nicht so einfach zu erklären ist gibt es bei diesem Tutorial eine kleine Beispiel map: Download

Update: Nachdem diese Entitykonstruktion anfaenglich problemlos funktioniert hat, weisen Maps seit einem Update von VALVe Instabilitaeten auf. Deshalb wuerde ich im Moment keinem Mapper empfehlen diese Entitykonstruktion in seiner Map einzubauen.