|
 |
Zerstörbare Kisten (multiplayer) |
T.R.Graves
*bM.sprite~
 
Dabei seit: 19.05.2006
Beiträge: 340

|
|
Zerstörbare Kisten (multiplayer) |
 |
Hallo zusammen
Ich habe mich mal hingesetzt und mich mal daran versucht eine zerstörebare Kiste zu
bauen.
Als erstes erstellt ihr ein script_model mit dem xmodel/crate01.
Danach macht ihr ein script_brushmodel gebt diesen die Textur Player_Clip.
Dieses script_brushmodel sollte die gleiche Grösse besitzen wie euer Model.
Danach macht ihr einen Brush und gebt diesem die Textur Trigger und macht daraus
einen Trigger-Damage.Gebt diesen Trigger den targetname crate_trigger.
Jetzt wählt ihr euren Trigger an und danach euer script_model(xmodel/crate01) und
drückt die Taste W. Jetzt sollte ein roter Pfeil vom Trigger auf euer Model zeigen.
Danach wählt ihr erneut euren Trigger an und danach euer script_brushmodel(textur player_clip)
und drückt erneut die taste w. Danach sollte ein blauer Pfeil vom Trigger auf euer Brushmodel zeigen.
Nun schiebt ihr euer Brushmodel(Player_clip) genau über euer Model.Somit könnt ihr im Spiel nicht mehr
durch euer Model laufen.
Jetzt schiebt ihr euer Trigger über das Model und den Playerclip. Er sollte etwas überstehen.
Das wars im Radianten.
Jetzt erstellt ihr euch eine crate.gsc und kopiert das untere script rein.
Diese crate.gsc legt ihr in das gleiche Verzeichnis wo eure map.gsc liegt.
Und jetzt müsst ihr in eure map.gsc noch folgende Zeile reinschreiben.
maps\mp\crate::main();
Für euren Sound schreibt ihr Folgende Zeile in eure Soundaliases.
Vorsicht nicht vergessen euren Mapnamen anzupassen.
crate,,doors/Door_WD_Kick.wav,0.72,0.8,,,,300,450,,streamed,,,,,,,,,,mp_eue
rmapname
Nachtrag: beim Laden der Map kommt es zu einer Fehlermeldung bezüglich des Sounds nicht weiter tragisch aber um Fehler zu vermeiden solltet ihr den Sound aus eurem Soundordner(Orginal) rausnehmen und umbenennen.
Und danach in eurem eigenem main/sound/misc Ordner legen.
Neue Soundaliases
crate,,misc/eurersoundname.mp3 oder wav,0.72,0.8,,,,300,450,,streamed,,,,,,,,,,mp_euermapname
Wie ihr im Script seht sind einige Befehle mit /// Zeichen davor. Wenn ihr diese entfernt
werden im Spiel bei Beschuss des Triggers die verschiedenen Schadenspunkte der Waffen angezeigt.
Desweiteren habe ich ein Damage befehl eingebaut so das die kiste nicht bei einem Schuss
kaputtgeht.Die Hitpoints stehen jetzt bei 200,je höher diese Zahl umso länger bleibt die
Kiste intakt.
main()
{
thread breaking_crate();
}
breaking_crate()
{
level._effect["crate_break"] = loadfx ("fx/explosions/grenadeExp_wood.efx");
level._effect["crate_dust"] = loadfx ("fx/props/crateExp_dust.efx");
precacheModel("xmodel/prop_destroyedcratecorner02");
precacheModel("xmodel/prop_destroyedcratecorner01");
ctrig = getentarray ("crate_trigger","targetname");
for (i=0; i<ctrig.size; i++) ctrig[i] thread crate_think();
}
crate_think()
{
dmg = 0; //Schadenzaehler
hitpoints = 200; //Schadenhoechstgrenze
wait(1);
/// iprintlnbold ("Start: DMG= ",dmg," HP= ",hitpoints);
while (dmg < hitpoints) //solange Schadenzaehler kleiner Hoechstgrenze ist
{
self waittill ("damage", amount); //Schaden der verwendeten Waffe ermitteln
dmg += amount; //Schaden aufsummieren
/// iprintln ("Health= ",self.health);//Schadensanzeige der verwendeten waffe--health
/// iprintln ("Schaden= ",amount);//Schadensanzeige der verwendeten waffe--hitpoints
/// iprintln ("DMG= ",dmg);//Schadensanzeige der verwendeten waffe dmg
if (dmg >= hitpoints) //wenn Schaden gleich oder hoeher der Hoechstgrenze is
{
//iprintlnbold ("crate broken!");
crate = getentarray(self.target,"targetname");
for (c=0; c<crate.size; c++) crate[c] thread crate_break();
wait.5;
self delete();
}
}
}
crate_break()
{
playfx (level._effect["crate_break"],self.origin);
deadcrate = spawn("script_model",(self.origin + (0,0,0)));
deadcrate setmodel("xmodel/prop_destroyedcratecorner02");
deadcrate playsound("crate");
deadcrate1 = spawn("script_model",(self.origin + (0,30,0)));
deadcrate1 setmodel("xmodel/prop_destroyedcratecorner01");
playfx (level._effect["crate_dust"],self.origin);
self delete();
}
Falls ihr Fragen oder Verbesserungsvorschläge habt schreibt es in diesen Tread.
Ciao
__________________

Wie habe ich gemerkt, dass ich Gott bin:
Ich habe gebetet und stellte fest, dass ich Selbstgespräche führe.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von T.R.Graves: 19.02.2007 14:31.
|
|
|
|
|
|
|
Hi
Das was du vorhast gibts auch als prefabs
in Activision\Call of Duty 2\map_source\prefabs\interactable_objects
das kann dir ja dabei etwas helfen
__________________
|
|
|
|
|
|
|
Richtig, die interactable_objects sind nur für Singleplayermaps.
__________________

|
|
|
|
|
|
|
Und dieses, sehr gute Tut von T.R.Graves wird ebenfalls in die Tutorial Sektion von CoD2 übernommen.
Klasse Arbeit !!!
Grüße
Private Grob
(Micka)
|
|
|
|
|
|
|
...und die Kiste mal als Prefab.
Download: Filefront 2,49 kb
LG
Bernie
__________________

|
|
|
|
|
|
|
Hätte da noch eine kleine Anregung.
Man kann auch jeder Kiste einen anderen Wert für den Maximalschaden mitgeben (damit z.B. kleine Kisten eher kaputt gehen als große Kisten).
Dazu dem trigger_damage noch folgendes hinzufügen:
Key: script_notewothy
Value: 200
Der Value bestimmt also den Maximalschaden und ist somit individuell anpassbar.
Im Script dann die Zeile
hitpoints = 200; //Schadenhoechstgrenze
durch folgende Zeile ersetzen
hitpoints = int(self.script_noteworthy); //Schadenhoechstgrenze
__________________
Da die Lichtgeschwindigkeit höher ist als die Schallgeschwindigkeit,
hält man so manchen für einen hellen Kopf, bis man ihn reden hört.
|
|
|
|
|
|
|
Nur mal so als Anmerkung zu sämtlichen zerstörbaren Dingen (Panzer, Fässer, Flaschen, etc). Leider ist es bei uns auf unserem Server (Admiralmod) so, daß sobald einer die erste Brandgranate wirft, alles zerstörbare automatisch mit in die Luft fliegt, egal wo die Dinger auf der Map stehen. Nervt dann doch etwas, zumal wenn die zerstörbaren Sachen dann respawnen und das spiel von vorne losgeht.
Deswegen lasse ich in meiner neuen Map diese Sachen alle weg.
Grüße
Private Grob
(Micka)
|
|
|
|
|
|
|
...und noch eine Anmerkung:
Wenn Ihr das xmodel crate01 benutzt, solltet Ihr die FETT markierten Stellen im Script so ändern. Das sieht schöner aus, da die jew. Ecken der Größe der unzerstörten Kiste entsprechen.
crate_break()
{
playfx (level._effect["crate_break"],self.origin);
deadcrate = spawn("script_model",(self.origin + (0,-25,0)));
deadcrate setmodel("xmodel/prop_destroyedcratecorner02");
deadcrate playsound("crate");
deadcrate1 = spawn("script_model",(self.origin + (0,25,0)));
deadcrate1 setmodel("xmodel/prop_destroyedcratecorner01");
playfx (level._effect["crate_dust"],self.origin);
self delete();
}
__________________

|
|
|
|
|
|
|
|
 |
Impressum ||Datenschutzerklärung
|