Zerstörbare Weinflaschen(multiplayer)

T.R.Graves
Hallo zusammen

Ich habe auf einer Seite ein Script entdeckt welches ermöglicht Weinflaschen im Multiplayer zu zerstören.

Als erstes erstellt ihr im Radianten ein script_model (xmodel/prop_kitchen_winebottle) und dann ein Brush mit der Textur trigger.

Aus diesem brush macht ihr dann ein trigger_damage (rechte Maustaste im xyz/Fenster anklicken).

Und ausserdem gebt ihr bei Key: targetname und bei value:bottle_trigger ein.

Dann wählt ihr diesen Trigger und dann euer Model an und drückt die Taste w. Danach sollte ein roter Strich erscheinen der von dem trigger zu deinem Model zeigt
Schiebt diesen trigger dann über euer Model so das er fast mit diesem abschliesst.

Ihr könnt dieses Model mitsamt dem trigger sooft kopieren wie ihr wollt.

Und jetzt erstellt ihr ein script namemeinerwahl.gsc

main()
{
thread breaking_bottles();
}
breaking_bottles()
{
level._effect["bottle_break"] = loadfx ("fx/props/wine_bottle.efx");
precacheModel("xmodel/prop_winebottle_broken_bot");
precacheModel("xmodel/prop_winebottle_broken_top");
btrig = getentarray ("bottle_trigger","targetname");
for (i=0; i<btrig.size; i++) btrig[i] thread bottle_think();
}

bottle_think()
{
self waittill ("trigger");
//iprintlnbold ("bottle broken!");
bottle = getentarray(self.target,"targetname");
for (b=0; b<bottle.size; b++) bottle[b] thread bottle_break();
wait.5;
self delete();
}

bottle_break()
{
playfx (level._effect["bottle_break"],self.origin);
deadbottle = spawn("script_model",(self.origin + (0,0,-4)));
deadbottle setmodel("xmodel/prop_winebottle_broken_bot");
deadbottle playsound("bullet_small_bottle");
bottletop = spawn("script_model",(self.origin + (0,0,8)));
bottletop setmodel("xmodel/prop_winebottle_broken_top");
bottletop rotatevelocity((250,-250, randomfloat(100)*1), 2, 0, .5);
bottletop moveGravity((0,0,30), .5);
wait .1;
self delete();
wait .5;
bottletop delete();
}

Und dann in euer map.gsc den Eintrag

maps\mp\namemeinerWahl::main();

Das orginalscript findet ihr hier

Ich habe von diesem Orginalscript nur einen Eintrag geändert

deadbottle = spawn("script_model",(self.origin + (0,0,-4)));

Dieser bestimmt das der Flaschenboden jetzt auch dort steht wo die ursprüngliche Flasche stand.

Viel Spass beim nachbauen
schnuller
Hy T.R.Graves

Da ich neu beim Mappen bin, kenne ich mich noch nicht so gut mit dem Scripten aus, aber vieleicht kannst du oder jemand anderes mir sagen, wo und wie ich maps\mp\namemeinerWahl::main(); in meiner map.gsc eintragen muss.

Meine map.gsc sieht noch so aus.

main()
{
maps\mp\_load::main();
}

Ich hoffe Ihr könnt mir helfen.
T.R.Graves
Am besten du erstellst eine seperate bottles.gsc.

Dort kommt das ganze script rein was oben geschrieben steht.

Dann kommt in deine map.gsc die Zeile maps\mp\bottles::main();

Diese löst das script aus wenn der Trigger getroffen wird.

Die bottles .gsc muss aber auch im gleichen Verzeichnis liegen wie deine map.gsc
schnuller
Die bottle.gsc habe ich im gleichen verzeichnis wie die map.gsc.In der map.gsc habe ich das so eingefügt.

main()
{
maps\mp\bottle::main();
}

Wenn ich die map starte bekomme ich aber immer diese Fehlermeldung.

************************************
writing to: D:\Programme\Activision\Call of Duty 2\servercache.dat
Error during initialization:
script runtime error
(see console for details)
(file 'maps/mp/gametypes/_callbacksetup.gsc', l
schnuller
Danke für deine schnelle Antwort, habe den Fehler gefunden.Meine map.gsc sieht jezt so aus.

main()
{
maps\mp\bottle::main();
maps\mp\_load::main();
}

Jezt muss ich nur noch den Fehler finden, wieso die Flasche nicht zerbricht.
grosses Grinsen grosses Grinsen
RollinHard
super danke graves...mal später probieren
Private Grob

Zitat:

Original von schnuller
Jezt muss ich nur noch den Fehler finden, wieso die Flasche nicht zerbricht.
grosses Grinsen grosses Grinsen


Hast du aus dem Trigger einen trigger_damage gemacht, inklusive targetname?

Und:

Geht der rote Strich vom Trigger zum Model? (Wichtig, umgekehrt funktioniert nicht)

Grüße
Private Grob
(Micka)
schnuller
Habe den Fehler gefunden.
Ich habe ein misc_model genommen und kein script_model.

Danke noch mal für eure Hilfe Grins 1
thund3r
das klapp ja alles wunderbar.

wie muss ich das script abändern und das gleiche mit tellern zu machen?

ein model wäre z.b prop_diningplate_roundplain oder geht das nicht?
hätte gerne das passende script dafür, da ich es nicht drauf hab

und wie ist das mit helmen zum runterschießen? geht das auch?