T.R.Graves
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
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