Forward Script geht nicht richtig

Alles rund um das Mappen für Enemy Territory
Antworten
Benutzeravatar
coolgabriel
Grünschnabel
Grünschnabel
Beiträge: 9
Registriert: Di 12. Jun 2007, 12:10
Wohnort: Augsburg
Alter: 44

Forward Script geht nicht richtig

Beitrag von coolgabriel »

Hallo leute kann mir mal einer mit meinem script helfen

Code: Alles auswählen

game_manager
{
	spawn
	{
		wm_axis_respawntime		5
		wm_allied_respawntime	5
		wm_number_of_objectives	3
		wm_set_round_timelimit	45
		
		// Objectives
		// 1: Steal the Documenst
		// 2: Escape with the Documents
		
		// Stopwatch mode defending team (0=Axis, 1=Allies)
		wm_set_defending_team	0
		
		// Winner on expiration of round timer (0=Axis, 1=Allies)
		wm_setwinner	0
		
		wait 500
		
		// Accum
		accum 1 set 0
		accum 2 set 0
		accum 3 set 0
		
		//setstate forwardspawn1_wobj invisible
		setautospawn "Bauernhaus" 1
		setautospawn "Bahnhof" 0
	}
	
	trigger allied_obj1
	{
		// change cvariable
		accum 1 set 1
		// check wenn runde gewonnen
		trigger game_manager checkgame
	}
	
	trigger allied_obj2
	{
		// change cvariable
		accum 2 set 1
		// check wenn runde gewonnen
		trigger game_manager checkgame
	}
	
	trigger allied_obj3
	{
		// change cvariable
		accum 3 set 1
		// check wenn runde gewonnen
		trigger game_manager checkgame
	}
	
	trigger axis_object_stolen
	{
		// ??
	}
	
	trigger axis_object_returned
	{
		// ??
	}
	
	trigger checkgame
	{
		accum 1 abort_if_not_equal 1
		accum 2 abort_if_not_equal 1
		accum 3 abort_if_not_equal 1
		
		// Set the round winner 0 axis 1 allies
		wm_setwinner 1
		// end the round
		wm_endround
	}
}

allied_obj1
{
	spawn
	{
	}
	
	death
	{
		trigger game_manager allied_obj1
	}
}

allied_obj2
{
	spawn
	{
	}
	
	death
	{
		trigger game_manager allied_obj2
	}
}

allied_obj3
{
	spawn
	{
	}
	
	death
	{
		trigger game_manager allied_obj3
	}
}


/// Neu, die Flaggen

forwardspawn1_flag	// Kaserne
{
	spawn
	{
		accum 0 set 2			// Wer besitzt die Flagge: 0-Axis, 1-Allied, 2-Niemand
	}
	trigger axis_capture				// Touched by an Axis player
	{
		accum 0 abort_if_equal 0 	// Haben die Axen die Flagge schon?
		accum 0 set 0 				// Jetzt haben die Axen die Flagge!
		setstate forwardspawn1_wobj default		// benachtichtigt Commandmap-Maker
		alertentity forwardspawn1_wobj		// Switch command map marker
		wm_announce "Axis reclaim the Kaserne!"
		setautospawn "Kaserne" 0		// Set Axis to forward spawn
		setautospawn "Bauernhaus" 1		// Set Allies to forward spawn
	}
	
	trigger allied_capture				// Touched by an allied player
	{
		accum 0 abort_if_equal 1 		// do Allies own flag?
		accum 0 set 1 				// Allies own the flag
		setstate forwardspawn1_wobj default
		alertentity forwardspawn1_wobj	// Switch command map marker
		wm_announce "Allies capture the Kaserne!"
		setautospawn "Kaserne"	1	// Set Allies to forward spawn
		setautospawn "Bahnhof"	0	// Name vom Standardspawn der Axis
	}

	trigger force_allied
	{
		accum 0 abort_if_equal 1 			// Do Allies own the flag?
		alertentity forwardspawn1_wobj		// Switch command map marker
		//alertentity forwardspawn1_spawns		// Switch all spawnpoints
		setautospawn "Bauernhaus"	1		// Set Allies to forward spawn
		setautospawn "Bahnhof"	0
	}
	
	//trigger force_axis
	//{
	//	accum 0 abort_if_equal 0 			// Do Allies own the flag?
	//	alertentity forwardspawn1_wobj		// Switch command map marker
	//	alertentity forwardspawn1_spawns		// Switch all spawnpoints
	//	setautospawn "Bahnhof"	0		// Set Allies to forward spawn
	//}
	//trigger kill
	//{
	//	remove				// Remove self (flag model)
	//}
}


forwardspawn2_flag	// Bahnhof
{
	spawn
	{
		accum 0 set 2			// Who owns flag: 0-Axis, 1-Allied
	}
	trigger axis_capture				// Touched by an Axis player
	{
		accum 0 abort_if_equal 0 		// do Axis own flag?
		accum 0 set 0 				// Axis own the flag
		setstate forwardspawn2_wobj default
		alertentity forwardspawn2_wobj		// Switch command map marker
		wm_announce "Axis reclaim the Forward Spawn Bahnhof!"
		setautospawn "Bahnhof"	0	// Set Axis to forward spawn
		setautospawn "Kaserne"	1	// Set Allies to forward spawn
	}

	trigger allied_capture				// Touched by an allied player
	{
		accum 0 abort_if_equal 1 		// do Allies own flag?
		accum 0 set 1 				// Allies own the flag
		setstate forwardspawn2_wobj default
		alertentity forwardspawn2_wobj	// Switch command map marker
		wm_announce "Allies capture the Forward Spawn Bahnhof!"
		setautospawn "Dorf"	0	// Set Axis to forward spawn
		setautospawn "Bahnhof"	1	// Set Allies to forward spawn
	}

	//trigger force_allied
	//{
	//	accum 0 abort_if_equal 1 			// Do Allies own the flag?
	//	alertentity forwardspawn1_wobj		// Switch command map marker
	//	alertentity forwardspawn1_spawns		// Switch all spawnpoints
	//	setautospawn "Bahnhof"	1		// Set Allies to forward spawn
	//}
	//trigger kill
	//{
	//	remove				// Remove self (flag model)
	//}
}

forwardspawn3_flag	// Dorf
{
	spawn
	{
		accum 0 set 2			// Who owns flag: 0-Axis, 1-Allied
	}
	trigger axis_capture				// Touched by an Axis player
	{
		accum 0 abort_if_equal 0 		// do Axis own flag?
		accum 0 set 0 				// Axis own the flag
		setstate forwardspawn3_wobj default
		alertentity forwardspawn3_wobj		// Switch command map marker
		wm_announce "Axis reclaim the Forward Spawn Dorf!"
		setautospawn "Dorf" 0		///"Forward Spawn"	0	// Set Axis to forward spawn
		setautospawn "Bahnhof" 1		// Set Allies to forward spawn
	}

	trigger allied_capture				// Touched by an allied player
	{
		accum 0 abort_if_equal 1 		// do Allies own flag?
		accum 0 set 1 				// Allies own the flag
		setstate forwardspawn3_wobj default
		alertentity forwardspawn3_wobj	// Switch command map marker
		wm_announce "Allies capture the Forward Spawn Dorf!"
		setautospawn "Dorf"	1	// Set Allies to forward spawn
		setautospawn "Casino"	0	// Name vom Standardspawn der Axis
	}

	//trigger force_allied
	//{
	//	accum 0 abort_if_equal 1 			// Do Allies own the flag?
	//	alertentity forwardspawn3_wobj		// Switch command map marker
	//	alertentity forwardspawn3_spawns		// Switch all spawnpoints
	//	setautospawn "Dorf"	1		// Set Allies to forward spawn
	//}
	//trigger kill
	//{
	//	remove				// Remove self (flag model)
	//}
}
das problem an den flaggen ist das die axen immer in der ersten flagge spawnen auch wenn sich die allies die flagge geholt haben.

ziel des scripts ist es die axen flagge für flagge zurückzudrängen
Benutzeravatar
WoodSTokk
Helpdesk
Helpdesk
Beiträge: 2634
Registriert: Fr 6. Dez 2002, 03:09
Wohnort: Wien/Österreich/Europa/Erde
Alter: 53

Beitrag von WoodSTokk »

So wie ich das sehe, gibt es 3 Flaggen.
Flagge 1 = Kaserne
Flagge 2 = Bahnhof
Flagge 3 = Dorf

Beim Start sind alle 3 Flaggen nicht besetzt (sie haben alle 'accum 0 set 2' im spawn).
Der fixe Spawn für Allies ist Bauernhaus.
Der fixe Spawn für Axis ist Casino.

Ich verstehe nur nicht, wieso du beim Mapstart den Spawnpoint für die Axis auf Bahnhof setzt (die Flagge ist zu Beginn nicht besetzt).

Oder willst du beim Mapstart alle Flaggen den Axis geben, dann musst du im 'spawn'-Abschnitt der Flaggen was ändern.

Die Map ist vorbei, wenn die Allies alle 3 Flaggen besitzen (Allies win) oder 45 Minuten um sind (Axis win).

Ich bau mir mal eine Testmap dafür.

~~~ EDIT ~~~

Mich hat das keine Ruhe gelassen und ich hab gleich 2 Testmaps gemacht.
Zuerst mal die URL zu meinem ZIP-File: http://www.netplot.at/sonst/flags.zip

Im ZIP-File sind 2 Maps mit den Scripten.

Beide Maps sind identisch aufgebaut.
Es gibt einen Allied-Spawn, einen Axis-Spawn und 3 Flaggen (Spawn1, Spawn2, Spawn3).
In der Map 'flag_none' besitzt jedes Team am Anfang nur ihren eigenen Default-Spawn, die Flaggen sind neutral.
In der Map 'flag_axis' starten die Allies auf dem Default-Spawn, die Axis sind im besitzt aller 3 Flaggen und starten auf Spawn1 (der südlichste, taktisch der näherste am Allied-Spawn).
Beide Maps gewinnen die Allies wenn sie alle 3 Flaggen haben, ansonsten Axis wenn die Zeit um ist.

Zum Script:
Ich habe aus reiner Bequemlichkeit einfach mal 'globalaccums' verwendet.
Wenn du im game_manager in den Triggern die die Flaggen auslösen eigene accums setzt, kannst du auch lokale accums draus machen.
Auf Zeile 15 das 'wait 500' bitte drin lassen!
Wenn der Server die Map und das Script läd, wird das Script sofort gestartet (also die spawn-Abschnitte).
Zu der Zeit sind aber die Entities in der Map noch garnicht fertig initialisiert.
Auf Zeile 18 und 19 werden dann die Autospawns zugewiesen.
Ohne dem wait in Zeile 15 weis der Server garnicht wo die Spawn überhaubt sind, weil er die Entities noch garnicht gelesen hat.
Deshalb ist hier ein wait drin.

Die Trigger 'fw_spawn[1|2|3]_[blue|red]' geben die Meldung im UI aus und setzen die Objektives.
Danach triggern sie alle 'check_spawn'.
Der 'check_spawn'-Abschnitt setzt die Spawn zuerst mal auf Default, da dieser Spawn niemals verloren gehen kann.
Danach wird über die globalaccums geprüft, ob ein Team einen günstigereren Spawn besitzt.
Wenn ja, wechselt es den Spawn dort hin.
Dadurch wird sichergestellt, das jedes Team immer am günstigsten Spawn plaziert wird, also die Axis so nahe wie möglich am Allied-Spawn und umgekehrt.
Diese Prüfung wird jedesmal durchlaufen, wenn eine Flagge den Besitzer wechselt.
Dieses Script stösst am Ende auch den 'check_game' an.
Die Flaggen-Scripte selbst wirst du ja kennen, ist nichts neues drin.

mfG WoodSTokk
Du scheisst es nicht zu wetzen
Testserver: @peStable (95.129.206.243:27960)
Benutzeravatar
coolgabriel
Grünschnabel
Grünschnabel
Beiträge: 9
Registriert: Di 12. Jun 2007, 12:10
Wohnort: Augsburg
Alter: 44

Beitrag von coolgabriel »

Hi,

schau mal auf

http://etmaps.gatewaynet.de

da hab ich ein flash video oben in die news gestellt von der map, das mit der falggen passt soweit

3 flaggen, gehören den axen

die allies sind sozusagen gelandet, falschirm oder sowas ähnliches (fantasie) und kommen nach ihrer
übernachtug aus dem heu (Bauernhaus), die allies müssen sich eine flagge nach der anderen hohlen
um möglichst nah dem kasino zu kommen, wo die axen 3 kisten gold im oberen stock auf dem tisch
stehen haben, das muss gestohlen werden, um es am bahnhof abzugeben, wenn alle 3 kisten gold
am bahnhof sind sollen die allies gewonne haben, wenn nicht, dann eben die axen.

leider beendet das spiel noch nicht reicht bei abgeb der 3 goldkisten.


schau mal das video an, ich habs als allies durchgespielt dauern 9 minuten (mit timescale)!


mfg gabriel (Sauerkraut)
Benutzeravatar
WoodSTokk
Helpdesk
Helpdesk
Beiträge: 2634
Registriert: Fr 6. Dez 2002, 03:09
Wohnort: Wien/Österreich/Europa/Erde
Alter: 53

Beitrag von WoodSTokk »

Nice, sieht gut aus.
Ich finde die Map etwas sehr groß. Bei einem 4on4 kommt es da weniger zu Zwischenfällen und eher zu Expeditionen ;)
Von der Kaserne zum Bahnhof laufst du da bei einem Eissee vorbei die Treppen rauf.
Irgendwie sehen die Treppen grafisch so aus als wären sie teilweise transparent. Ist das ein Fehler oder sie das nur in dem Video so komisch aus?
Den Bahnhof finde ich gut gelungen. Vieleicht könntest du auf ein Gleis noch einen oder mehrere Waggone stellen in denen das Gold abgelegt werden soll. So mitten auf dem Gleis sieht das eher nicht gut aus.
Beim Kasino fiel mir auf, daß die Traufe (untere Dachkante) direkt mit der Wand endet.
Zieh das Dach über die Mauer und gib der Unterseite eine Holz-Textur, sieht besser aus.

So, nun zu deinem Problem.
Das mit den Goldkisten hab ich jetzt mal probiert.
Hat lange gedauert, da sogar das Beispiel das ich hatte fehlerhaft war.
Aber jetzt hab ich es funktionsfähig.
Hier meine ZIP dazu: http://www.netplot.at/sonst/3boxes.zip

In der Map sind auch die 3 Flaggen drin und im Script berücksichtigt.
Die Zuteilung der Spawnpunkte habe ich auf das Schema gesetzt, das du auch hast.
Allerdings ist mir eingefallen, daß das auch nicht die Welt ist.
Zu Beginn haben Axis alle 3 Flaggen und spawnen bei 1 (den Allies an nähersten).
Angenommen, die Allies nemmen 1 nicht, sondern gleich 2, dann spawnen Allies auf 2 und Axis auf 3, so weit, so gut.
Wenn die Axis aber dann wieder Flagge 2 einnehmen, spawnen sie auch dort, anstatt auf 3 was strategisch besser wäre.
Wenn du willst überarbeite ich das mit den Spawns nochmal, daß das Script automatisch den besten Punkt wählt.

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