setautospawn schlägt fehl...

Alles rund um das Mappen für Enemy Territory
Antworten
Teekeks
Stürmer
Stürmer
Beiträge: 59
Registriert: Mo 24. Aug 2009, 14:08
Alter: 31

setautospawn schlägt fehl...

Beitrag von Teekeks »

Hallo!
Ich habe folgente Spawns:
1) scriptname:spawn2_axis
2) scriptname:spawn2_allied
3) scriptname:startspawn_axis
4) scriptname:startspawn_allied

Und folgendes Script:

Code: Alles auswählen

game_manager
{
    spawn
    {
        wm_axis_respawntime 5 // Sekunden
        wm_allied_respawntime 5 // Sekunden
        wm_set_round_timelimit 30 // Minuten
        wm_set_defending_team 0 // Verteidiger bei Stopwatch (0=Axis / 1=Allies)
        wm_setwinner -1 // Sieger wenn die Zeit aus ist (0=Axis / 1=Allies / -1=Nobody)
        wm_number_of_objectives 1 // Anzahl der Objectives
        wait 500
        setautospawn "startspawn_axis" 0
        setautospawn "startspawn_allied" 1
        wm_objective_status 1 0 0
        wm_objective_status 1 1 0
    }
}
flag_spawn2
{
	spawn
	{
	}
	trigger allied_capture
	{
		 wm_announce "Allies capture the Roomflag!"
		setautospawn "spawn2_allied" 1
		setautospawn "startspawn_axis" 0
	}
	trigger axis_capture
	{
		 wm_announce "Axis capture the Roomflag!"
		setautospawn "spawn2_axis" 0
		setautospawn "startspawn_allied" 1
	}
}
startspawn_allied_flag
{
	spawn
	{
	}
}
startspawn_axis_flag
{
	spawn
	{
	}
}
Nun bekomme ich aber die fehlermeldung:
G_Scripting: setautospawn, couldn't find target
Woran liegt das?
Benutzeravatar
WoodSTokk
Helpdesk
Helpdesk
Beiträge: 2634
Registriert: Fr 6. Dez 2002, 03:09
Wohnort: Wien/Österreich/Europa/Erde
Alter: 53

Beitrag von WoodSTokk »

Code: Alles auswählen

setautospawn "startspawn_axis" 0 
setautospawn "startspawn_allied" 1
Woher kommen diese Namen?

Für gewöhnlich hast du bei den Spawnpoints ein 'team_WOLF_objective'.
Dieses 'team_WOLF_objective' MUSS den Key 'spawnflags' haben (wird im Entities-Fenster über die Schalter gesetzt).
Zusätzlich gibst du den Key 'description' mit einen Namen ein (zB: Axis Spawn).
Genau diese Namen (in der 'description') werden im Script bei 'setautospawn' verwendet.

Ich nehme mal an, die Flagge hat als Scriptname 'flag_spawn2' enthalten (sieht im Script zumindest so aus).
Über dem 'team_WOLF_checkpoint' setzt du noch ein 'team_WOLF_objective'.
Dieses bekommt mehrere Keys:
scriptname: flag_spawn2_wobj
targetname: flag_spawn2_wobj
description: Roomflag
Und setzte das richtige Team als Besitzen.
Wenn es zum Map-Start keinen Team gehören soll, musst du trotzdem eines setzen, sonst hat das Entity kein 'spawnflags'.

Hier mal ein Script das funktionieren sollte:

Code: Alles auswählen

flag_spawn2
{
    spawn
    {
        accum 0 set 0 // Wer besitzt die Flagge bei Mapstart: 0-Axis, 1-Allied, 2-Nobody
    }

    trigger allied_capture
    {
        accum 0 abort_if_equal 1 // Haben die Allies die Flagge schon?
        accum 0 set 1 // Jetzt haben die Allies die Flagge!
        setstate flag_spawn2_wobj default // benachrichtige flag_spawn2_wobj (Commandmap-Marker)
        alertentity flag_spawn2_wobj // Update flag_spawn2_wobj
        wm_announce "Allies capture the Roomflag!"
        setautospawn	"Roomflag" 1 // Name vom Spawn für Allies
        setautospawn	"Axis Spawn" 0 // Name vom Standard-Spawn der Axis
    }

    trigger axis_capture
    {
        accum 0 abort_if_equal 0 // Haben die Axis die Flagge schon?
        accum 0 set 0 // Jetzt haben die Axis die Flagge!
        setstate flag_spawn2_wobj default
        alertentity flag_spawn2_wobj
        wm_announce "Axis capture the Roomflag!"
        setautospawn	"Allied Spawn"	1 // Name vom Standard-Spawn der Allies
        setautospawn	"Roomflag"	0 // Name vom Spawn für Axis
    }
}
accum kommt aus der Assambler-Sprache und steht für Accumulator (wieder aufladbare Zellen).
Auf einem accum kannst du eine Ganzzahl speichern.
Jedes Script hat 10 accum's die aber nur in diesem Script gültig sind.
Die accum's sind nummeriert, von 0 bis 9.
In diesem Script verwende ich accum 0 um zu speichern wer die Flagge hat.
Wenn die Allies die Flagge bereits haben und ein Allies-Spieler berührt sie, würde das Script sonst unnötig laufen.
Durch die Prüfung des accum 0 wird das verhindert.
Wenn du in einem Script mal einen accum verwendest, den auch ein anderes Script abfragen oder setzen soll (Scriptübergreifend), musst du 'globalaccum' verwenden.
'globalaccum' hast du auch 10, wieder von 0 bis 9 durch nummeriert.

Noch eine Anmerkung:
Im 'spawn'-Abschnitt hab ich den Axis die Flagge gegeben. (accum 0 set 0)
Also sollte beim 'team_WOLF_objective' auch 'default_axis' makiert sein.
Wenn du 'default_allies' makiert hast, musst du im 'spawn'-Abschnitt 'accum 0 set 1' schreiben.
Wenn die Flagge zu Beginn keiner haben soll, musst du trotzdem eines der beiden Teams makieren.
Im 'spawn'-Abschnitt schreibst du dann 'accum 0 set 2' und zusätzlich 'setstate flag_spawn2_wobj invisible'.
Dadurch wird die Flagge in der Commandmap versteckt.

Was ist ???

Code: Alles auswählen

startspawn_allied_flag 
{ 
   spawn 
   { 
   } 
} 
startspawn_axis_flag 
{ 
   spawn 
   { 
   } 
}
Ich denke, das brauchst du nicht ;)

mfG WoodSTokk
Du scheisst es nicht zu wetzen
Testserver: @peStable (95.129.206.243:27960)
Antworten