|
|
xmodel + Trigger per script spawnen! |
AUT HK Moto6
5-Minuten-Ei
Dabei seit: 19.09.2011
Beiträge: 20
|
|
xmodel + Trigger per script spawnen! |
|
Hi!
Ich komme aus Ö und modde und mappe ein bißchen.
Vielleicht kann mir ja jemand helfen.
Zuerst möchte ich gleich sagen daß ich schon erfahrung habe, also ich weiß was ne csv ist,
was zonefiles sind, wie man ne mod oder ne map compiled, also grundkenntnisse sind da.
Was ich machen will ist folgendes:
Ich will auf jeder Map die mit "meiner" Mod (hab die RAW Files der X4 eXtreme Mod) läuft,
egal ob custom oder stock map, irgendwo ein xmodel mit nem Trigger_use_touch spawnen
lassen (z.B. auf irgendeinem Player Spawnpoint) und weiß nicht wie ich das anstellen soll.
Der Trigger soll dann natürlich auch ein Skript aufrufen (das ist schon fertig und funzt, hab es auf ner eigenen Testmap ausprobiert, trigger und Model mit Radiant eingefügt, das script in die map.ff mit rein compiled --> funzt)
Ich hab hier schon was ähnliches gefunden, was mich aber nicht weiterbringt, weil ich net weiß wie ich den Code integriere so daß der auch aufgerufen wird.
Anmerkung: ICH BIN LEIDER KEIN CODER ODER SKRIPTER ODER PROGRAMMER (mach das Hobbymäßig)
Zusammenfassung:
Ich weiß wie man das xmodel in die Mod kriegt (in die mod.csv eintragen)
Ich weiß NICHT wie man das xmodel irgendwo spawnen lässt
Ich weiß NICHT wie man zusätzlich an der gleichen Stelle nen Trigger spawnt.
Ich weiß NICHT wie das Skript zum model-spawn aussehen soll und wo man es einfügen muß
Ich weiß NICHT wo das Skript das vom Trigger ausgelöst wird hin muß (dieses Skript ist fertig)
Ich hoffe jemand kann mir helfen.
Ich bedanke mich jetzt schon fürs lesen
Greetz
HK Moto6
|
|
|
|
|
|
RE: xmodel + Trigger per script spawnen! |
|
Original von AUT HK Moto6
Ich weiß wie man das xmodel in die Mod kriegt (in die mod.csv eintragen)
Das ist das einfachste. Du fügst nur folgende Zeile in deine mod.csv ein:
xmodel,name_des_xmodels
Original von AUT HK Moto6
Ich weiß NICHT wie man das xmodel irgendwo spawnen lässt
Dazu musst du das xmodel in deinem Script erst einmal precachen (in den Speicher laden). Das geht im Script folgendermaßen:
PrecacheModel( "name_des_xmodels" );
Das machst du am besten irgendwo ganz am Anfang deines scripts (das muss ja nur ein mal geschehen).
Dann musst du in der Map ein script_model-Entity erzeugen und an der Stelle spawnen lassen, wo das xmodel dann auftauchen soll (ich trage hier mal wahllose Koordinaten ein)
mein_Xmodel = spawn( "script_model", ( 800, 200, 16 ) ); //script_model spawnen lassen
mein_Xmodel.angles = ( 0, 0, 0 ); //Stellt den Winkel ein
mein_Xmodel setModel( "name_des_xmodels" ); //xmodel dem script_model zuweisen
Somit ist das xmodel schonmal gespawned.
Original von AUT HK Moto6
Ich weiß NICHT wie man zusätzlich an der gleichen Stelle nen Trigger spawnt.
Hier wird es dann richtig kompliziert.
Punkt eins, du kannst per Script lediglich einen trigger_radius spawnen lassen (mit den anderen geht es nicht). Wie das geht, ist allerdings einfach, das geht genau so, wie beim xmodel.
mein_Trigger = spawn( "trigger_radius", mein_Xmodel.origin, 0, 128, 32 ); // trigger spawnt am selben Punkt wie das xmodel mit einer Höhe von 128 und einem Radius von 32 (oder Durchmesser 64)
Danach wird es dann echt kompliziert. Um eine use_touch funktion zu erzeugen müsstest du das jetzt alles selber scripten. Du müsstest checken, ob ein player im trigger_radius steht. Dann, solange er innerhalb des triggers steht, prüfen, ob er die Benutzen-Taste drückt und darüber dann deinen Script auslösen.
Original von AUT HK Moto6
Ich weiß NICHT wie das Skript zum model-spawn aussehen soll und wo man es einfügen muß
Wie es aussehen muss, steht ja quasi schon oben in meinen anderen Antworten. Wenn das xmodel sofort beim start der Map da sein soll, rufst du deinen Script am besten aus der _globallogic.gsc auf, und da innerhalb der Funktion Callback_StartGameType() (da irgendwo am Ende der Funktion).
Original von AUT HK Moto6
Ich weiß NICHT wo das Skript das vom Trigger ausgelöst wird hin muß (dieses Skript ist fertig)
Wohin ist eigentlich völlig egal, solange im Aufruf des Scripts der richtige Pfad angegeben ist. Wenn du z.B. eine Funktion Main() in deinem Script aufrufen willst, und dein Script befindet sich im Order maps/mp/gametypes, dann rufst du die Funktion folgendermaßen auf
thread maps\mp\gametypes\meinScript::main();
__________________
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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von OLD MAN WITH GUN: 15.10.2011 13:50.
|
|
|
|
|
AUT HK Moto6
5-Minuten-Ei
Dabei seit: 19.09.2011
Beiträge: 20
|
|
THX, werd das heute noch testen!
"mein_Xmodel = spawn( "script_model", ( 800, 200, 16 ) ); //script_model spawnen lassen"
kann man die Koordinaten aus einem spawnpoint auslesen? Weil das script soll ja auf verschiedenen Karten funktionieren, als brauche ich ja auf jeder map andere Koordinaten. Ein TDM Spawnpoint sollte ja auf jeder Map vorhanden sein.
Greetz
HK Moto6
PS: Könntest du mir bei der "use_touch" Funktion auch behilflich sein (oder geht das gar nicht?)
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von AUT HK Moto6: 16.10.2011 14:00.
|
|
|
|
|
AUT HK Moto6
5-Minuten-Ei
Dabei seit: 19.09.2011
Beiträge: 20
|
|
Ich krieg das leider nicht hin!
bekomme immer Bad Syntax bei dieser Zeile
ERROR: script compile error
bad syntax
mein_Xmodel = spawn( "script_model", ( -337.5 -1572.5 16 ) ); //script_model spawnen lassen
(see console for details)
********************
----- Server Shutdown -----
==== ShutdownGame (1) ====
wie ich anfangs schon erwähnte, bin kein coder, also keine Ahnung von "() [] {} ; usw.."
aber thx für die Hilfe
|
|
|
|
|
AUT HK Moto6
5-Minuten-Ei
Dabei seit: 19.09.2011
Beiträge: 20
|
|
OMG ich hab die Beistriche zwischen den Koordinaten vergessen. Jetzt funzt es (fast)
(Wie es aussieht führe ich den Thread hier allein)
Das xmodel erscheint auf der Map, der Trigger wahrscheinlich auch (man sieht ihn ja nicht, ich bekomme aber keine Fehler),
aber wie wird mein Skript vom Trigger ausgelöst.
Ich werd jetz mal alles was ich hab hier posten.
Das model hab ich in die mod.csv eingetragen
Dann hab ich in die _globallogic.gsc diese zwei Zeilen eingefügt
thread maps\mp\gametypes\model_spawn::main();
thread maps\mp\gametypes\sound_1::main(); // das ist mein skript
dann hab ich ne neue gsc erstellt --> model_spawn.gsc
(natürlich in maps/mp/gametypes/)
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
|
main()
{
precacheModel("com_coffee_machine") ;
thread spawnModel();
}
spawnModel()
{
Coffe = spawn( "script_model", ( -337.5, -1572.5, 16 ) );
Coffe setModel( "com_coffee_machine" );
sound_1 = spawn( "trigger_radius", Coffe.origin, 0, 128, 32 ); // trigger spawnt am selben Punkt wie das xmodel mit einer Höhe von 128 und einem Radius von 32 (oder Durchmesser 64)
} |
|
bis hierhin funzt alles
aber wie wird jetzt mein Skript (sound_1.gsc) gestartet
Anmerkung: Der trigger heisst im skript --> sound_1 (targetname)
|
|
|
|
|
|
Original von AUT HK Moto6
aber wie wird jetzt mein Skript (sound_1.gsc) gestartet
Anmerkung: Der trigger heisst im skript --> sound_1 (targetname)
Du musst den trigger warten lassen, das er getriggert wird.
sound_1 waittill( "trigger", player ); //player ist dann der Spieler, der den trigger auslöst, man kann also direkten Bezug auf den player nehmen
Der Script wird hier so lange angehalten, bis ein Spieler den Trigger (durch hineinlaufen) auslöst. Nach dieser Zeile kannst du dann deinen Script starten.
Und als Spawn würde ich da eher DM-Spawns empfehlen (die sind meist globaler platziert).
Sollte glaube ich so klappen (keine Garantie)
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
|
main()
{
precacheModel("com_coffee_machine") ;
thread spawnModel();
}
spawnModel()
{
possible_spawns = getentarray( "classname", "mp_dm_spawn" );
my_spawn = possible_spawn[ randomint( possible_spawns.size ) ];
Coffe = spawn( "script_model", my_spawn.origin ); //Spawnt an einem zufälligen dm_spawn
Coffe.angles = my_spawn.angles; // gleicher Winkel (Blickrichtung) wie dm_spawn
Coffe setModel( "com_coffee_machine" );
sound_1 = spawn( "trigger_radius", Coffe.origin, 0, 128, 32 ); // trigger spawnt am selben Punkt wie das xmodel mit einer Höhe von 128 und einem Radius von 32 (oder Durchmesser 64)
sound_1 waittill( "trigger", player );
thread maps\mp\gametypes\sound_1::main();
} |
|
__________________
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.
|
|
|
|
|
AUT HK Moto6
5-Minuten-Ei
Dabei seit: 19.09.2011
Beiträge: 20
|
|
Habs getestet!
Als erstes kommt dieser Fehler
ERROR: script compile error
uninitialised variable 'possible_spawn'
my_spawn = possible_spawn[ randomint( possible_spawns.size ) ];
(see console for details)
bei possible_spawn fehlt das s, also --> possible_spawns
hab das ausgebessert, dann kommt aber dieser Fehler
******* script runtime error *******
size cannot be applied to undefined: (file 'maps/mp/gametypes/model_spawn.gsc', line 9)
my_spawn = possible_spawns[ randomint( possible_spawns.size ) ];
*
Error: called from:
(file 'maps/mp/gametypes/model_spawn.gsc', line 4)
thread spawnModel();
|
|
|
|
|
AUT HK Moto6
5-Minuten-Ei
Dabei seit: 19.09.2011
Beiträge: 20
|
|
MEGA THX!
Jetzt funzt es.
Hab noch zwei kleine Problemchen, die will ich aber selbst lösen.
Sollte ich es nicht schaffen dann melde ich mich hier wieder.
Mega herzlichen Dank für deine Hilfe, hab wieder einiges dazugelernt.
|
|
|
|
|
AUT HK Moto6
5-Minuten-Ei
Dabei seit: 19.09.2011
Beiträge: 20
|
|
Wie kann ich denn das gespawnte xmodel wieder verschwinden lassen?
Also ich will daß es verschwindet sobald ich in den Trigger laufe.
Original von OLD MAN WITH GUN
Um eine use_touch funktion zu erzeugen müsstest du das jetzt alles selber scripten. Du müsstest checken, ob ein player im trigger_radius steht. Dann, solange er innerhalb des triggers steht, prüfen, ob er die Benutzen-Taste drückt
kannst du mir bei der use_touch Funktion helfen?
Mit helfen meine ich: "Kannst Du mir das Script schreiben?"
Greetz
|
|
|
|
|
AUT HK Moto6
5-Minuten-Ei
Dabei seit: 19.09.2011
Beiträge: 20
|
|
OK Danke für die Hilfe!
Ich brauch jetzt kein Script mehr.
Hab alles fertig.
Das Model und der Trigger spawnen an einem zufälligen DM Spawnpoint. Wenn ich in den Trigger laufe verschwindet das Model (und hoffentlich auch der Trigger) und mein Script wird gestartet. Am Ende des Scripts (Dauer ca.3 Minuten) lasse ich den Thread wiederholen, wodurch das Model und der Trigger wieder woanders gespawnt werden.
Das Script is jetz wieder durch hineinlaufen auslösbar.
Hier das fertige Script
Code angehängt. Klicke hier zum Ein-/Ausblenden
code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
|
main()
{
precacheModel("chicken_static") ;
thread spawnModel();
}
spawnModel()
{
possible_spawns = getentarray( "mp_dm_spawn", "classname" );
my_spawn = possible_spawns[ randomint( possible_spawns.size ) ];
Chicken = spawn( "script_model", my_spawn.origin ); //Spawnt an einem zufälligen dm_spawn
Chicken.angles = my_spawn.angles; //gleicher Winkel (Blickrichtung) wie dm_spawn
Chicken setModel( "chicken_static" );
setdvar("g_speed","200"); //Geschwindigkeit wird normalisiert
trigger = spawn( "trigger_radius", Chicken.origin, 0, 60, 1 ); // trigger spawnt am selben Punkt wie das xmodel
trigger waittill( "trigger", player );
Chicken delete();
trigger delete();
iPrintlnBold("^4(!!*^1DAS HUHN WURDE GEFUNDEN^4*!!)"); //Text wird angezeigt
wait(1);
iPrintlnBold("^4(!!*^1MACHT EUCH BEREIT^4*!!)"); //Text wird angezeigt
musicplay ("sound_2"); //Musik wird gstartet
iPrintlnBold("^4(!!*^15^4*!!)"); //Text wird angezeigt
wait(1);
iPrintlnBold("^4(!!*^14^4*!!)"); //Text wird angezeigt
wait(1);
iPrintlnBold("^4(!!*^13^4*!!)"); //Text wird angezeigt
wait(1);
iPrintlnBold("^4(!!*^12^4*!!)"); //Text wird angezeigt
wait(1);
iPrintlnBold("^4(!!*^11^4*!!)"); //Text wird angezeigt
wait(1);
iPrintlnBold("^4(!!*^1LOS^4*!!)"); //Text wird angezeigt
musicstop( 0 ); //Musik wird gestoppt
musicplay ("sound_1"); //Musik wird gestartet
wait(1); setdvar("g_speed","500"); //Geschwindigkeit wird erhöht
wait(29);
iPrintlnBold("^4(!!*^1UND ES WIRD NOCH SCHNELLER^4*!!)"); //Text wird angezeigt
wait(1.5);
setdvar("g_speed","1000"); //Geschwindigkeit wird erhöht
wait(30.5);
iPrintlnBold("^4(!!*^1SO, KURZE VERSCHNAUFPAUSE^4*!!)"); //Text wird angezeigt
MusicStop( 0 );
setdvar("g_speed","200"); //Geschwindigkeit wird normalisiert
wait(120);
iPrintlnBold("^4(!!*^3FINDE DAS HUHN!^4*!!)"); //Text wird angezeigt
wait(1);
thread spawnModel();
return;
}
|
|
Genauso hab ich mir das vorgestellt.
Is jetzt so sogar besser als mit nem use_touch trigger.
Was ich jetzt noch gerne machen würde:
Kann man mit diesem Trigger eine Abschusserienbelohnung adden?
Also in der x4 Mod gibt es ne AC130 welche man nach bestimmten Kills bekommt.
Gibt es einen Befehl (oder ein script) mit dem man diese AC130 direkt ins Inventar kriegt, also ohne Killstreak, sodass man diese dann benutzen kann sobald man in den Trigger läuft?
|
|
|
|
|
|
player maps\mp\gametypes\_hardpoints::giveHardpointItem( "ac130_25mm_mp" );
oder
player maps\mp\gametypes\_hardpoints::giveHardpointItem( "ac130_40mm_mp" );
oder
player maps\mp\gametypes\_hardpoints::giveHardpointItem( "ac130_105mm_mp" );
__________________
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.
|
|
|
|
|
AUT HK Moto6
5-Minuten-Ei
Dabei seit: 19.09.2011
Beiträge: 20
|
|
OMG is das geil, das funzt ja wirklich.
Aber warum weisst du (OLD MAN WITH GUN) immer wo man was findet.
Hab auch selbst einige .gsc files aus der x4 Mod durchsucht,
um solchen Code zu finden,
hab auch einiges probiert, hat alles net gefunzt,
und dann kommst du, schreibst eine Zeile und das isses.
Nochmal MEGATHX
Greetz
HK Moto6
|
|
|
|
|
|
|
|
Impressum ||Datenschutzerklärung
|