====== (8) Fussball ====== (8) Fussball ist eine etwas andere Map.\\ Man spielt Fussball statt zu kämpfen.\\ Dazu steuert man 2-4 Helden die einen als Fussball dienenden Stein mit X und Y durch die Gegend bolzen. =====Mapper===== Anarki =====Download:===== Im Mappack auf [[http://www.dedk.de|dedk.de]] =====Startrohstoffe:===== keine, nicht benötigt =====Ressourcen:===== keine, nicht benötigt =====Dorfzentren:===== keine, nicht benötigt =====Regeln===== * Es darf nur immer ein Held eines Teams an den Ball, sonst werden alle Helden wegteleportiert\\ * Im Torraum darf nur 1 Held des Teams stehen, keiner des gegnerischen\\ * Es wird gespielt solang man Lust hat, es gibt kein Ende des Spiels\\ =====Steuerung===== Y ist ein kurzer Schuss X ist ein langer Schuss =====Mapdesign:===== {{:gameplay:multiplayer:maps:8_fussball:8_fussball_ole_maxi.jpg|}} =====Tips&Tricks:===== =====Skript===== -- Script.Load( "C:\\91 Spiele\\Siedler 5 Mapping\\fussballv2.lua" ) function GameCallback_OnGameStart() -- Include global tool script functions Script.Load(Folders.MapTools.."Ai\\Support.lua") Script.Load( "Data\\Script\\MapTools\\MultiPlayer\\MultiplayerTools.lua" ) Script.Load( "Data\\Script\\MapTools\\Tools.lua" ) Script.Load( "Data\\Script\\MapTools\\WeatherSets.lua" ) IncludeGlobals("Comfort") Globale_Hilfsvariablen() Comforts() -- Init global MP stuff MultiplayerTools.InitCameraPositionsForPlayers() MultiplayerTools.SetUpGameLogicOnMPGameConfig() if XNetwork.Manager_DoesExist() == 0 then -- Standardschleife für Multiplayersetup 8 Player for i=1,8 do MultiplayerTools.DeleteFastGameStuff(i) end local PlayerID = GUI.GetPlayerID() Logic.PlayerSetIsHumanFlag( PlayerID, 1 ) Logic.PlayerSetGameStateToPlaying( PlayerID ) end for i = 1,8 do Logic.SetEntityExplorationRange ( GetEntityId("Explore"..i), 10000 ) end SetupFussballTributes() BallSperre = true Setup_GUIHacks() _Spielstand = {0,0} local _mapname = "Siedlerfussball" MapVersion_Write_Comfort(_mapname, _Spielstand[1]..":".._Spielstand[2]) StartCountdown(5, FussballStart, true) Mitte = {} Mitte.X = 10050 Mitte.Y = 9650 tort2 = {} tort2.X = 3370 tort2.Y = 9650 tort1 = {} tort1.X = 16670 tort1.Y = 9650 torrad = 1200 VORLAGE_player = 0 VORLAGE_hero = 0 LASTSHOT_player = 0 LASTSHOT_hero = 0 fussballt1 = 15 fussballt2 = 15 Torschuetzen = {} Torvorlagen = {} Torschuetzen[1] = {} Torschuetzen[2] = {} ScorerOfTheGame = "" Torschuetzenkoenig = "" -- Pfosten fuer Spieler 0 setzen Score.Player[0] = {} --um error bei ID0 zu vermeiden Score.Player[0]["buildings"] = 0 Score.Player[0]["all"] = 0 Comfort_TrackEntitysIni() Comfort_TrackEntityIni(1,Entities.XD_WallCorner) for i = Track_Entity_Table[1][Entities.XD_WallCorner].count, 1, -1 do local _pos = GetPosition ( Track_Entity_Table[1][Entities.XD_WallCorner][i] ) DestroyEntity ( Track_Entity_Table[1][Entities.XD_WallCorner][i] ) Logic.CreateEntity( Entities.XD_WallCorner, _pos.X, _pos.Y, 0, 0 ) end -- Alle Spieler auf Friendly stellen for i = 1,8 do for u = 1,8 do if not (i == u) then Logic.SetDiplomacyState( i, u, Diplomacy.Friendly ) end end end SetupHeroes() foult1 = 0 foult2 = 0 StartSimpleJob("Fouljob") -- sound abstellen GUI.SetFeedbackSoundOutputState(0) StartSimpleHiResJob("WPUpdateFeedback") end function FussballStart() BallSperre = false Camera.ZoomSetFactorMax(2) end function SetupHeroes() heropos1 = {} heropos2 = {} for i = 1,10 do heropos1[i] = GetPosition("T1_"..i) end for i = 1,10 do heropos2[i] = GetPosition("T2_"..i) end local t1count = 0; local heroes1 = 0; local heroes2 = 0; for i = 1,4 do if Logic.PlayerGetGameState( i ) == 1 then t1count = t1count + 1 end end local t2count = 0; for i = 5,8 do if Logic.PlayerGetGameState( i ) == 1 then t2count = t2count + 1 end end for i = 1,4 do Display.SetPlayerColorMapping(i,XNetwork.GameInformation_GetLogicPlayerColor(1)) end for i = 5,8 do Display.SetPlayerColorMapping(i,XNetwork.GameInformation_GetLogicPlayerColor(5)) end if t1count == 1 and t2count == 0 then Logic.CreateEntity( herotable[2], heropos1[1].X, heropos1[1].Y, 0, 1 ) Logic.CreateEntity( herotable[3], heropos1[2].X, heropos1[2].Y, 0, 1 ) Logic.CreateEntity( herotable[4], heropos1[3].X, heropos1[3].Y, 0, 1 ) Logic.CreateEntity( herotable[5], heropos1[4].X, heropos1[4].Y, 0, 1 ) Logic.CreateEntity( herotable[6], heropos2[1].X, heropos2[1].Y, 0, 1 ) Logic.CreateEntity( herotable[7], heropos2[2].X, heropos2[2].Y, 0, 1 ) Logic.CreateEntity( herotable[8], heropos2[3].X, heropos2[3].Y, 0, 1 ) Logic.CreateEntity( herotable[9], heropos2[4].X, heropos2[4].Y, 0, 1 ) end if t1count == 1 and t2count == 1 then Logic.CreateEntity( herotable[2], heropos1[1].X, heropos1[1].Y, 0, 1 ) Logic.CreateEntity( herotable[3], heropos1[2].X, heropos1[2].Y, 0, 1 ) Logic.CreateEntity( herotable[4], heropos1[3].X, heropos1[3].Y, 0, 1 ) Logic.CreateEntity( herotable[5], heropos1[4].X, heropos1[4].Y, 0, 1 ) Logic.CreateEntity( herotable[6], heropos2[1].X, heropos2[1].Y, 0, 5 ) Logic.CreateEntity( herotable[7], heropos2[2].X, heropos2[2].Y, 0, 5 ) Logic.CreateEntity( herotable[8], heropos2[3].X, heropos2[3].Y, 0, 5 ) Logic.CreateEntity( herotable[9], heropos2[4].X, heropos2[4].Y, 0, 5 ) --Logic.CreateEntity( herotable[10], heropos1[9].X, heropos1[9].Y, 0, 1 ) --Logic.CreateEntity( herotable[11], heropos1[10].X, heropos1[10].Y, 0, 1 ) end if t1count == 1 and t2count == 2 then Logic.CreateEntity( herotable[2], heropos1[1].X, heropos1[1].Y, 0, 1 ) Logic.CreateEntity( herotable[3], heropos1[2].X, heropos1[2].Y, 0, 1 ) Logic.CreateEntity( herotable[4], heropos1[3].X, heropos1[3].Y, 0, 1 ) Logic.CreateEntity( herotable[5], heropos1[4].X, heropos1[4].Y, 0, 1 ) Logic.CreateEntity( herotable[6], heropos2[1].X, heropos1[1].Y, 0, 5 ) Logic.CreateEntity( herotable[7], heropos2[2].X, heropos1[2].Y, 0, 5 ) Logic.CreateEntity( herotable[8], heropos2[3].X, heropos1[3].Y, 0, 6 ) Logic.CreateEntity( herotable[9], heropos2[4].X, heropos1[4].Y, 0, 6 ) --Logic.CreateEntity( herotable[10], heropos1[9].X, heropos1[9].Y, 0, 1 ) --Logic.CreateEntity( herotable[11], heropos1[10].X, heropos1[10].Y, 0, 1 ) end if t1count == 2 and t2count == 1 then Logic.CreateEntity( herotable[2], heropos1[1].X, heropos1[1].Y, 0, 1 ) Logic.CreateEntity( herotable[3], heropos1[2].X, heropos1[2].Y, 0, 1 ) Logic.CreateEntity( herotable[4], heropos1[3].X, heropos1[3].Y, 0, 2 ) Logic.CreateEntity( herotable[5], heropos1[4].X, heropos1[4].Y, 0, 2 ) Logic.CreateEntity( herotable[6], heropos2[1].X, heropos2[1].Y, 0, 5 ) Logic.CreateEntity( herotable[7], heropos2[2].X, heropos2[2].Y, 0, 5 ) Logic.CreateEntity( herotable[8], heropos2[3].X, heropos2[3].Y, 0, 5 ) Logic.CreateEntity( herotable[9], heropos2[4].X, heropos2[4].Y, 0, 5 ) --Logic.CreateEntity( herotable[10], heropos1[9].X, heropos1[9].Y, 0, 1 ) --Logic.CreateEntity( herotable[11], heropos1[10].X, heropos1[10].Y, 0, 1 ) end if t1count == 2 and t2count == 2 then Logic.CreateEntity( herotable[2], heropos1[1].X, heropos1[1].Y, 0, 1 ) Logic.CreateEntity( herotable[3], heropos1[2].X, heropos1[2].Y, 0, 1 ) Logic.CreateEntity( herotable[4], heropos1[3].X, heropos1[3].Y, 0, 1 ) Logic.CreateEntity( herotable[5], heropos1[4].X, heropos1[4].Y, 0, 1 ) Logic.CreateEntity( herotable[6], heropos1[5].X, heropos1[5].Y, 0, 2 ) Logic.CreateEntity( herotable[7], heropos1[6].X, heropos1[6].Y, 0, 2 ) Logic.CreateEntity( herotable[8], heropos1[7].X, heropos1[7].Y, 0, 2 ) Logic.CreateEntity( herotable[9], heropos1[8].X, heropos1[8].Y, 0, 2 ) Logic.CreateEntity( herotable[2], heropos2[1].X, heropos2[1].Y, 0, 5 ) Logic.CreateEntity( herotable[3], heropos2[2].X, heropos2[2].Y, 0, 5 ) Logic.CreateEntity( herotable[4], heropos2[3].X, heropos2[3].Y, 0, 5 ) Logic.CreateEntity( herotable[5], heropos2[4].X, heropos2[4].Y, 0, 5 ) Logic.CreateEntity( herotable[6], heropos2[5].X, heropos2[5].Y, 0, 6 ) Logic.CreateEntity( herotable[7], heropos2[6].X, heropos2[6].Y, 0, 6 ) Logic.CreateEntity( herotable[8], heropos2[7].X, heropos2[7].Y, 0, 6 ) Logic.CreateEntity( herotable[9], heropos2[8].X, heropos2[8].Y, 0, 6 ) end if t1count == 2 and t2count == 3 then Logic.CreateEntity( herotable[2], heropos1[1].X, heropos1[1].Y, 0, 1 ) Logic.CreateEntity( herotable[3], heropos1[2].X, heropos1[2].Y, 0, 1 ) Logic.CreateEntity( herotable[4], heropos1[3].X, heropos1[3].Y, 0, 1 ) Logic.CreateEntity( herotable[5], heropos1[4].X, heropos1[4].Y, 0, 1 ) Logic.CreateEntity( herotable[6], heropos1[5].X, heropos1[5].Y, 0, 2 ) Logic.CreateEntity( herotable[7], heropos1[6].X, heropos1[6].Y, 0, 2 ) Logic.CreateEntity( herotable[8], heropos1[7].X, heropos1[7].Y, 0, 2 ) Logic.CreateEntity( herotable[9], heropos1[8].X, heropos1[8].Y, 0, 2 ) Logic.CreateEntity( herotable[2], heropos2[1].X, heropos2[1].Y, 0, 5 ) Logic.CreateEntity( herotable[3], heropos2[2].X, heropos2[2].Y, 0, 5 ) Logic.CreateEntity( herotable[4], heropos2[3].X, heropos2[3].Y, 0, 5 ) Logic.CreateEntity( herotable[5], heropos2[4].X, heropos2[4].Y, 0, 6 ) Logic.CreateEntity( herotable[6], heropos2[5].X, heropos2[5].Y, 0, 6 ) Logic.CreateEntity( herotable[7], heropos2[6].X, heropos2[6].Y, 0, 6 ) Logic.CreateEntity( herotable[8], heropos2[7].X, heropos2[7].Y, 0, 7 ) Logic.CreateEntity( herotable[9], heropos2[8].X, heropos2[8].Y, 0, 7 ) end if t1count == 3 and t2count == 2 then Logic.CreateEntity( herotable[2], heropos1[1].X, heropos1[1].Y, 0, 1 ) Logic.CreateEntity( herotable[3], heropos1[2].X, heropos1[2].Y, 0, 1 ) Logic.CreateEntity( herotable[4], heropos1[3].X, heropos1[3].Y, 0, 1 ) Logic.CreateEntity( herotable[5], heropos1[4].X, heropos1[4].Y, 0, 2 ) Logic.CreateEntity( herotable[6], heropos1[5].X, heropos1[5].Y, 0, 2 ) Logic.CreateEntity( herotable[7], heropos1[6].X, heropos1[6].Y, 0, 2 ) Logic.CreateEntity( herotable[8], heropos1[7].X, heropos1[7].Y, 0, 3 ) Logic.CreateEntity( herotable[9], heropos1[8].X, heropos1[8].Y, 0, 3 ) Logic.CreateEntity( herotable[2], heropos2[1].X, heropos2[1].Y, 0, 5 ) Logic.CreateEntity( herotable[3], heropos2[2].X, heropos2[2].Y, 0, 5 ) Logic.CreateEntity( herotable[4], heropos2[3].X, heropos2[3].Y, 0, 5 ) Logic.CreateEntity( herotable[5], heropos2[4].X, heropos2[4].Y, 0, 5 ) Logic.CreateEntity( herotable[6], heropos2[5].X, heropos2[5].Y, 0, 6 ) Logic.CreateEntity( herotable[7], heropos2[6].X, heropos2[6].Y, 0, 6 ) Logic.CreateEntity( herotable[8], heropos2[7].X, heropos2[7].Y, 0, 6 ) Logic.CreateEntity( herotable[9], heropos2[8].X, heropos2[8].Y, 0, 6 ) end if t1count == 3 and t2count == 3 then Logic.CreateEntity( herotable[2], heropos1[1].X, heropos1[1].Y, 0, 1 ) Logic.CreateEntity( herotable[3], heropos1[2].X, heropos1[2].Y, 0, 1 ) Logic.CreateEntity( herotable[4], heropos1[3].X, heropos1[3].Y, 0, 1 ) Logic.CreateEntity( herotable[5], heropos1[4].X, heropos1[4].Y, 0, 2 ) Logic.CreateEntity( herotable[6], heropos1[5].X, heropos1[5].Y, 0, 2 ) Logic.CreateEntity( herotable[7], heropos1[6].X, heropos1[6].Y, 0, 2 ) Logic.CreateEntity( herotable[8], heropos1[7].X, heropos1[7].Y, 0, 3 ) Logic.CreateEntity( herotable[9], heropos1[8].X, heropos1[8].Y, 0, 3 ) Logic.CreateEntity( herotable[10], heropos1[9].X, heropos1[9].Y, 0, 3 ) Logic.CreateEntity( herotable[2], heropos2[1].X, heropos2[1].Y, 0, 5 ) Logic.CreateEntity( herotable[3], heropos2[2].X, heropos2[2].Y, 0, 5 ) Logic.CreateEntity( herotable[4], heropos2[3].X, heropos2[3].Y, 0, 5 ) Logic.CreateEntity( herotable[5], heropos2[4].X, heropos2[4].Y, 0, 6 ) Logic.CreateEntity( herotable[6], heropos2[5].X, heropos2[5].Y, 0, 6 ) Logic.CreateEntity( herotable[7], heropos2[6].X, heropos2[6].Y, 0, 6 ) Logic.CreateEntity( herotable[8], heropos2[7].X, heropos2[7].Y, 0, 7 ) Logic.CreateEntity( herotable[9], heropos2[8].X, heropos2[8].Y, 0, 7 ) Logic.CreateEntity( herotable[10], heropos2[9].X, heropos2[9].Y, 0, 7 ) end if t1count == 4 and t2count == 3 then Logic.CreateEntity( herotable[2], heropos1[1].X, heropos1[1].Y, 0, 1 ) Logic.CreateEntity( herotable[3], heropos1[2].X, heropos1[2].Y, 0, 1 ) Logic.CreateEntity( herotable[4], heropos1[3].X, heropos1[3].Y, 0, 1 ) Logic.CreateEntity( herotable[5], heropos1[4].X, heropos1[4].Y, 0, 2 ) Logic.CreateEntity( herotable[6], heropos1[5].X, heropos1[5].Y, 0, 2 ) Logic.CreateEntity( herotable[7], heropos1[6].X, heropos1[6].Y, 0, 3 ) Logic.CreateEntity( herotable[8], heropos1[7].X, heropos1[7].Y, 0, 3 ) Logic.CreateEntity( herotable[9], heropos1[8].X, heropos1[8].Y, 0, 4 ) Logic.CreateEntity( herotable[10], heropos1[9].X, heropos1[9].Y, 0, 4 ) Logic.CreateEntity( herotable[2], heropos2[1].X, heropos2[1].Y, 0, 5 ) Logic.CreateEntity( herotable[3], heropos2[2].X, heropos2[2].Y, 0, 5 ) Logic.CreateEntity( herotable[4], heropos2[3].X, heropos2[3].Y, 0, 5 ) Logic.CreateEntity( herotable[5], heropos2[4].X, heropos2[4].Y, 0, 6 ) Logic.CreateEntity( herotable[6], heropos2[5].X, heropos2[5].Y, 0, 6 ) Logic.CreateEntity( herotable[7], heropos2[6].X, heropos2[6].Y, 0, 6 ) Logic.CreateEntity( herotable[8], heropos2[7].X, heropos2[7].Y, 0, 7 ) Logic.CreateEntity( herotable[9], heropos2[8].X, heropos2[8].Y, 0, 7 ) Logic.CreateEntity( herotable[10], heropos2[9].X, heropos2[9].Y, 0, 7 ) end if t1count == 3 and t2count == 4 then Logic.CreateEntity( herotable[2], heropos1[1].X, heropos1[1].Y, 0, 1 ) Logic.CreateEntity( herotable[3], heropos1[2].X, heropos1[2].Y, 0, 1 ) Logic.CreateEntity( herotable[4], heropos1[3].X, heropos1[3].Y, 0, 1 ) Logic.CreateEntity( herotable[5], heropos1[4].X, heropos1[4].Y, 0, 2 ) Logic.CreateEntity( herotable[6], heropos1[5].X, heropos1[5].Y, 0, 2 ) Logic.CreateEntity( herotable[7], heropos1[6].X, heropos1[6].Y, 0, 2 ) Logic.CreateEntity( herotable[8], heropos1[7].X, heropos1[7].Y, 0, 3 ) Logic.CreateEntity( herotable[9], heropos1[8].X, heropos1[8].Y, 0, 3 ) Logic.CreateEntity( herotable[10], heropos1[9].X, heropos1[9].Y, 0, 3 ) Logic.CreateEntity( herotable[2], heropos2[1].X, heropos2[1].Y, 0, 5 ) Logic.CreateEntity( herotable[3], heropos2[2].X, heropos2[2].Y, 0, 5 ) Logic.CreateEntity( herotable[4], heropos2[3].X, heropos2[3].Y, 0, 5 ) Logic.CreateEntity( herotable[5], heropos2[4].X, heropos2[4].Y, 0, 6 ) Logic.CreateEntity( herotable[6], heropos2[5].X, heropos2[5].Y, 0, 6 ) Logic.CreateEntity( herotable[7], heropos2[6].X, heropos2[6].Y, 0, 7 ) Logic.CreateEntity( herotable[8], heropos2[7].X, heropos2[7].Y, 0, 7 ) Logic.CreateEntity( herotable[9], heropos2[8].X, heropos2[8].Y, 0, 8 ) Logic.CreateEntity( herotable[10], heropos2[9].X, heropos2[9].Y, 0, 8 ) end if t1count == 4 and t2count == 4 then Logic.CreateEntity( herotable[2], heropos1[1].X, heropos1[1].Y, 0, 1 ) Logic.CreateEntity( herotable[3], heropos1[2].X, heropos1[2].Y, 0, 1 ) Logic.CreateEntity( herotable[4], heropos1[3].X, heropos1[3].Y, 0, 1 ) Logic.CreateEntity( herotable[5], heropos1[4].X, heropos1[4].Y, 0, 2 ) Logic.CreateEntity( herotable[6], heropos1[5].X, heropos1[5].Y, 0, 2 ) Logic.CreateEntity( herotable[7], heropos1[6].X, heropos1[6].Y, 0, 3 ) Logic.CreateEntity( herotable[8], heropos1[7].X, heropos1[7].Y, 0, 3 ) Logic.CreateEntity( herotable[9], heropos1[8].X, heropos1[8].Y, 0, 4 ) Logic.CreateEntity( herotable[10], heropos1[9].X, heropos1[9].Y, 0, 4 ) Logic.CreateEntity( herotable[2], heropos2[1].X, heropos2[1].Y, 0, 5 ) Logic.CreateEntity( herotable[3], heropos2[2].X, heropos2[2].Y, 0, 5 ) Logic.CreateEntity( herotable[4], heropos2[3].X, heropos2[3].Y, 0, 5 ) Logic.CreateEntity( herotable[5], heropos2[4].X, heropos2[4].Y, 0, 6 ) Logic.CreateEntity( herotable[6], heropos2[5].X, heropos2[5].Y, 0, 6 ) Logic.CreateEntity( herotable[7], heropos2[6].X, heropos2[6].Y, 0, 7 ) Logic.CreateEntity( herotable[8], heropos2[7].X, heropos2[7].Y, 0, 7 ) Logic.CreateEntity( herotable[9], heropos2[8].X, heropos2[8].Y, 0, 8 ) Logic.CreateEntity( herotable[10], heropos2[9].X, heropos2[9].Y, 0, 8 ) end end function SetupFussballTributes() herotable = {Entities.PU_Hero1, Entities.PU_Hero2,Entities.PU_Hero3,Entities.PU_Hero4,Entities.PU_Hero5,Entities.PU_Hero6,Entities.CU_BlackKnight,Entities.CU_Mary_de_Mortfichet,Entities.CU_Barbarian_Hero,Entities.PU_Hero10,Entities.PU_Hero11, Entities.CU_Evil_Queen} gvAna_KurzerSchussTribute = {} for i = 1,8 do gvAna_KurzerSchussTribute[i] = {} end gvAna_KurzerSchussTribute[1][1] = function() KurzerSchuss(1, 1) end gvAna_KurzerSchussTribute[1][2] = function() KurzerSchuss(1, 2) end gvAna_KurzerSchussTribute[1][3] = function() KurzerSchuss(1, 3) end gvAna_KurzerSchussTribute[1][4] = function() KurzerSchuss(1, 4) end gvAna_KurzerSchussTribute[1][5] = function() KurzerSchuss(1, 5) end gvAna_KurzerSchussTribute[1][6] = function() KurzerSchuss(1, 6) end gvAna_KurzerSchussTribute[1][7] = function() KurzerSchuss(1, 7) end gvAna_KurzerSchussTribute[1][8] = function() KurzerSchuss(1, 8) end gvAna_KurzerSchussTribute[1][9] = function() KurzerSchuss(1, 9) end gvAna_KurzerSchussTribute[1][10] = function() KurzerSchuss(1, 10) end gvAna_KurzerSchussTribute[1][11] = function() KurzerSchuss(1, 11) end gvAna_KurzerSchussTribute[1][12] = function() KurzerSchuss(1, 12) end gvAna_KurzerSchussTribute[2][1] = function() KurzerSchuss(2, 1) end gvAna_KurzerSchussTribute[2][2] = function() KurzerSchuss(2, 2) end gvAna_KurzerSchussTribute[2][3] = function() KurzerSchuss(2, 3) end gvAna_KurzerSchussTribute[2][4] = function() KurzerSchuss(2, 4) end gvAna_KurzerSchussTribute[2][5] = function() KurzerSchuss(2, 5) end gvAna_KurzerSchussTribute[2][6] = function() KurzerSchuss(2, 6) end gvAna_KurzerSchussTribute[2][7] = function() KurzerSchuss(2, 7) end gvAna_KurzerSchussTribute[2][8] = function() KurzerSchuss(2, 8) end gvAna_KurzerSchussTribute[2][9] = function() KurzerSchuss(2, 9) end gvAna_KurzerSchussTribute[2][10] = function() KurzerSchuss(2, 10) end gvAna_KurzerSchussTribute[2][11] = function() KurzerSchuss(2, 11) end gvAna_KurzerSchussTribute[2][12] = function() KurzerSchuss(2, 12) end gvAna_KurzerSchussTribute[3][1] = function() KurzerSchuss(3,1) end gvAna_KurzerSchussTribute[3][2] = function() KurzerSchuss(3, 2) end gvAna_KurzerSchussTribute[3][3] = function() KurzerSchuss(3, 3) end gvAna_KurzerSchussTribute[3][4] = function() KurzerSchuss(3, 4) end gvAna_KurzerSchussTribute[3][5] = function() KurzerSchuss(3, 5) end gvAna_KurzerSchussTribute[3][6] = function() KurzerSchuss(3, 6) end gvAna_KurzerSchussTribute[3][7] = function() KurzerSchuss(3, 7) end gvAna_KurzerSchussTribute[3][8] = function() KurzerSchuss(3, 8) end gvAna_KurzerSchussTribute[3][9] = function() KurzerSchuss(3, 9) end gvAna_KurzerSchussTribute[3][10] = function() KurzerSchuss(3, 10) end gvAna_KurzerSchussTribute[3][11] = function() KurzerSchuss(3, 11) end gvAna_KurzerSchussTribute[3][12] = function() KurzerSchuss(3, 12) end gvAna_KurzerSchussTribute[4][1] = function() KurzerSchuss(4,1) end gvAna_KurzerSchussTribute[4][2] = function() KurzerSchuss(4, 2) end gvAna_KurzerSchussTribute[4][3] = function() KurzerSchuss(4, 3) end gvAna_KurzerSchussTribute[4][4] = function() KurzerSchuss(4, 4) end gvAna_KurzerSchussTribute[4][5] = function() KurzerSchuss(4, 5) end gvAna_KurzerSchussTribute[4][6] = function() KurzerSchuss(4, 6) end gvAna_KurzerSchussTribute[4][7] = function() KurzerSchuss(4, 7) end gvAna_KurzerSchussTribute[4][8] = function() KurzerSchuss(4, 8) end gvAna_KurzerSchussTribute[4][9] = function() KurzerSchuss(4, 9) end gvAna_KurzerSchussTribute[4][10] = function() KurzerSchuss(4, 10) end gvAna_KurzerSchussTribute[4][11] = function() KurzerSchuss(4, 11) end gvAna_KurzerSchussTribute[4][12] = function() KurzerSchuss(4, 12) end gvAna_KurzerSchussTribute[5][1] = function() KurzerSchuss(5,1) end gvAna_KurzerSchussTribute[5][2] = function() KurzerSchuss(5, 2) end gvAna_KurzerSchussTribute[5][3] = function() KurzerSchuss(5, 3) end gvAna_KurzerSchussTribute[5][4] = function() KurzerSchuss(5, 4) end gvAna_KurzerSchussTribute[5][5] = function() KurzerSchuss(5, 5) end gvAna_KurzerSchussTribute[5][6] = function() KurzerSchuss(5, 6) end gvAna_KurzerSchussTribute[5][7] = function() KurzerSchuss(5, 7) end gvAna_KurzerSchussTribute[5][8] = function() KurzerSchuss(5, 8) end gvAna_KurzerSchussTribute[5][9] = function() KurzerSchuss(5, 9) end gvAna_KurzerSchussTribute[5][10] = function() KurzerSchuss(5, 10) end gvAna_KurzerSchussTribute[5][11] = function() KurzerSchuss(5, 11) end gvAna_KurzerSchussTribute[5][12] = function() KurzerSchuss(5, 12) end gvAna_KurzerSchussTribute[6][1] = function() KurzerSchuss(6,1) end gvAna_KurzerSchussTribute[6][2] = function() KurzerSchuss(6, 2) end gvAna_KurzerSchussTribute[6][3] = function() KurzerSchuss(6, 3) end gvAna_KurzerSchussTribute[6][4] = function() KurzerSchuss(6, 4) end gvAna_KurzerSchussTribute[6][5] = function() KurzerSchuss(6, 5) end gvAna_KurzerSchussTribute[6][6] = function() KurzerSchuss(6, 6) end gvAna_KurzerSchussTribute[6][7] = function() KurzerSchuss(6, 7) end gvAna_KurzerSchussTribute[6][8] = function() KurzerSchuss(6, 8) end gvAna_KurzerSchussTribute[6][9] = function() KurzerSchuss(6, 9) end gvAna_KurzerSchussTribute[6][10] = function() KurzerSchuss(6, 10) end gvAna_KurzerSchussTribute[6][11] = function() KurzerSchuss(6, 11) end gvAna_KurzerSchussTribute[6][12] = function() KurzerSchuss(6, 12) end gvAna_KurzerSchussTribute[7][1] = function() KurzerSchuss(7,1) end gvAna_KurzerSchussTribute[7][2] = function() KurzerSchuss(7, 2) end gvAna_KurzerSchussTribute[7][3] = function() KurzerSchuss(7, 3) end gvAna_KurzerSchussTribute[7][4] = function() KurzerSchuss(7, 4) end gvAna_KurzerSchussTribute[7][5] = function() KurzerSchuss(7, 5) end gvAna_KurzerSchussTribute[7][6] = function() KurzerSchuss(7, 6) end gvAna_KurzerSchussTribute[7][7] = function() KurzerSchuss(7, 7) end gvAna_KurzerSchussTribute[7][8] = function() KurzerSchuss(7, 8) end gvAna_KurzerSchussTribute[7][9] = function() KurzerSchuss(7, 9) end gvAna_KurzerSchussTribute[7][10] = function() KurzerSchuss(7, 10) end gvAna_KurzerSchussTribute[7][11] = function() KurzerSchuss(7, 11) end gvAna_KurzerSchussTribute[7][12] = function() KurzerSchuss(7, 12) end gvAna_KurzerSchussTribute[8][1] = function() KurzerSchuss(8,1) end gvAna_KurzerSchussTribute[8][2] = function() KurzerSchuss(8, 2) end gvAna_KurzerSchussTribute[8][3] = function() KurzerSchuss(8, 3) end gvAna_KurzerSchussTribute[8][4] = function() KurzerSchuss(8, 4) end gvAna_KurzerSchussTribute[8][5] = function() KurzerSchuss(8, 5) end gvAna_KurzerSchussTribute[8][6] = function() KurzerSchuss(8, 6) end gvAna_KurzerSchussTribute[8][7] = function() KurzerSchuss(8, 7) end gvAna_KurzerSchussTribute[8][8] = function() KurzerSchuss(8, 8) end gvAna_KurzerSchussTribute[8][9] = function() KurzerSchuss(8, 9) end gvAna_KurzerSchussTribute[8][10] = function() KurzerSchuss(8, 10) end gvAna_KurzerSchussTribute[8][11] = function() KurzerSchuss(8, 11) end gvAna_KurzerSchussTribute[8][12] = function() KurzerSchuss(8, 12) end gvAna_KurzerSchussId = {} for i = 1,8 do gvAna_KurzerSchussId[i] = {} for u = 1,12 do gvAna_KurzerSchussId[i][u] = AddTribute( CreateATribute(8, "", { Gold = 0}, gvAna_KurzerSchussTribute[i][u] ) ) end end gvAna_LangerSchussTribute = {} for i = 1,8 do gvAna_LangerSchussTribute[i] = {} end gvAna_LangerSchussTribute[1][1] = function() LangerSchuss(1, 1) end gvAna_LangerSchussTribute[1][2] = function() LangerSchuss(1, 2) end gvAna_LangerSchussTribute[1][3] = function() LangerSchuss(1, 3) end gvAna_LangerSchussTribute[1][4] = function() LangerSchuss(1, 4) end gvAna_LangerSchussTribute[1][5] = function() LangerSchuss(1, 5) end gvAna_LangerSchussTribute[1][6] = function() LangerSchuss(1, 6) end gvAna_LangerSchussTribute[1][7] = function() LangerSchuss(1, 7) end gvAna_LangerSchussTribute[1][8] = function() LangerSchuss(1, 8) end gvAna_LangerSchussTribute[1][9] = function() LangerSchuss(1, 9) end gvAna_LangerSchussTribute[1][10] = function() LangerSchuss(1, 10) end gvAna_LangerSchussTribute[1][11] = function() LangerSchuss(1, 11) end gvAna_LangerSchussTribute[1][12] = function() LangerSchuss(1, 12) end gvAna_LangerSchussTribute[2][1] = function() LangerSchuss(2, 1) end gvAna_LangerSchussTribute[2][2] = function() LangerSchuss(2, 2) end gvAna_LangerSchussTribute[2][3] = function() LangerSchuss(2, 3) end gvAna_LangerSchussTribute[2][4] = function() LangerSchuss(2, 4) end gvAna_LangerSchussTribute[2][5] = function() LangerSchuss(2, 5) end gvAna_LangerSchussTribute[2][6] = function() LangerSchuss(2, 6) end gvAna_LangerSchussTribute[2][7] = function() LangerSchuss(2, 7) end gvAna_LangerSchussTribute[2][8] = function() LangerSchuss(2, 8) end gvAna_LangerSchussTribute[2][9] = function() LangerSchuss(2, 9) end gvAna_LangerSchussTribute[2][10] = function() LangerSchuss(2, 10) end gvAna_LangerSchussTribute[2][11] = function() LangerSchuss(2, 11) end gvAna_LangerSchussTribute[2][12] = function() LangerSchuss(2, 12) end gvAna_LangerSchussTribute[3][1] = function() LangerSchuss(3,1) end gvAna_LangerSchussTribute[3][2] = function() LangerSchuss(3, 2) end gvAna_LangerSchussTribute[3][3] = function() LangerSchuss(3, 3) end gvAna_LangerSchussTribute[3][4] = function() LangerSchuss(3, 4) end gvAna_LangerSchussTribute[3][5] = function() LangerSchuss(3, 5) end gvAna_LangerSchussTribute[3][6] = function() LangerSchuss(3, 6) end gvAna_LangerSchussTribute[3][7] = function() LangerSchuss(3, 7) end gvAna_LangerSchussTribute[3][8] = function() LangerSchuss(3, 8) end gvAna_LangerSchussTribute[3][9] = function() LangerSchuss(3, 9) end gvAna_LangerSchussTribute[3][10] = function() LangerSchuss(3, 10) end gvAna_LangerSchussTribute[3][11] = function() LangerSchuss(3, 11) end gvAna_LangerSchussTribute[3][12] = function() LangerSchuss(3, 12) end gvAna_LangerSchussTribute[4][1] = function() LangerSchuss(4,1) end gvAna_LangerSchussTribute[4][2] = function() LangerSchuss(4, 2) end gvAna_LangerSchussTribute[4][3] = function() LangerSchuss(4, 3) end gvAna_LangerSchussTribute[4][4] = function() LangerSchuss(4, 4) end gvAna_LangerSchussTribute[4][5] = function() LangerSchuss(4, 5) end gvAna_LangerSchussTribute[4][6] = function() LangerSchuss(4, 6) end gvAna_LangerSchussTribute[4][7] = function() LangerSchuss(4, 7) end gvAna_LangerSchussTribute[4][8] = function() LangerSchuss(4, 8) end gvAna_LangerSchussTribute[4][9] = function() LangerSchuss(4, 9) end gvAna_LangerSchussTribute[4][10] = function() LangerSchuss(4, 10) end gvAna_LangerSchussTribute[4][11] = function() LangerSchuss(4, 11) end gvAna_LangerSchussTribute[4][12] = function() LangerSchuss(4, 12) end gvAna_LangerSchussTribute[5][1] = function() LangerSchuss(5,1) end gvAna_LangerSchussTribute[5][2] = function() LangerSchuss(5, 2) end gvAna_LangerSchussTribute[5][3] = function() LangerSchuss(5, 3) end gvAna_LangerSchussTribute[5][4] = function() LangerSchuss(5, 4) end gvAna_LangerSchussTribute[5][5] = function() LangerSchuss(5, 5) end gvAna_LangerSchussTribute[5][6] = function() LangerSchuss(5, 6) end gvAna_LangerSchussTribute[5][7] = function() LangerSchuss(5, 7) end gvAna_LangerSchussTribute[5][8] = function() LangerSchuss(5, 8) end gvAna_LangerSchussTribute[5][9] = function() LangerSchuss(5, 9) end gvAna_LangerSchussTribute[5][10] = function() LangerSchuss(5, 10) end gvAna_LangerSchussTribute[5][11] = function() LangerSchuss(5, 11) end gvAna_LangerSchussTribute[5][12] = function() LangerSchuss(5, 12) end gvAna_LangerSchussTribute[6][1] = function() LangerSchuss(6,1) end gvAna_LangerSchussTribute[6][2] = function() LangerSchuss(6, 2) end gvAna_LangerSchussTribute[6][3] = function() LangerSchuss(6, 3) end gvAna_LangerSchussTribute[6][4] = function() LangerSchuss(6, 4) end gvAna_LangerSchussTribute[6][5] = function() LangerSchuss(6, 5) end gvAna_LangerSchussTribute[6][6] = function() LangerSchuss(6, 6) end gvAna_LangerSchussTribute[6][7] = function() LangerSchuss(6, 7) end gvAna_LangerSchussTribute[6][8] = function() LangerSchuss(6, 8) end gvAna_LangerSchussTribute[6][9] = function() LangerSchuss(6, 9) end gvAna_LangerSchussTribute[6][10] = function() LangerSchuss(6, 10) end gvAna_LangerSchussTribute[6][11] = function() LangerSchuss(6, 11) end gvAna_LangerSchussTribute[6][12] = function() LangerSchuss(6, 12) end gvAna_LangerSchussTribute[7][1] = function() LangerSchuss(7,1) end gvAna_LangerSchussTribute[7][2] = function() LangerSchuss(7, 2) end gvAna_LangerSchussTribute[7][3] = function() LangerSchuss(7, 3) end gvAna_LangerSchussTribute[7][4] = function() LangerSchuss(7, 4) end gvAna_LangerSchussTribute[7][5] = function() LangerSchuss(7, 5) end gvAna_LangerSchussTribute[7][6] = function() LangerSchuss(7, 6) end gvAna_LangerSchussTribute[7][7] = function() LangerSchuss(7, 7) end gvAna_LangerSchussTribute[7][8] = function() LangerSchuss(7, 8) end gvAna_LangerSchussTribute[7][9] = function() LangerSchuss(7, 9) end gvAna_LangerSchussTribute[7][10] = function() LangerSchuss(7, 10) end gvAna_LangerSchussTribute[7][11] = function() LangerSchuss(7, 11) end gvAna_LangerSchussTribute[7][12] = function() LangerSchuss(7, 12) end gvAna_LangerSchussTribute[8][1] = function() LangerSchuss(8,1) end gvAna_LangerSchussTribute[8][2] = function() LangerSchuss(8, 2) end gvAna_LangerSchussTribute[8][3] = function() LangerSchuss(8, 3) end gvAna_LangerSchussTribute[8][4] = function() LangerSchuss(8, 4) end gvAna_LangerSchussTribute[8][5] = function() LangerSchuss(8, 5) end gvAna_LangerSchussTribute[8][6] = function() LangerSchuss(8, 6) end gvAna_LangerSchussTribute[8][7] = function() LangerSchuss(8, 7) end gvAna_LangerSchussTribute[8][8] = function() LangerSchuss(8, 8) end gvAna_LangerSchussTribute[8][9] = function() LangerSchuss(8, 9) end gvAna_LangerSchussTribute[8][10] = function() LangerSchuss(8, 10) end gvAna_LangerSchussTribute[8][11] = function() LangerSchuss(8, 11) end gvAna_LangerSchussTribute[8][12] = function() LangerSchuss(8, 12) end gvAna_LangerSchussId = {} for i = 1,8 do gvAna_LangerSchussId[i] = {} for u = 1,12 do gvAna_LangerSchussId[i][u] = AddTribute( CreateATribute(8, "", { Gold = 0}, gvAna_LangerSchussTribute[i][u] ) ) end end end function LangerSchuss(_player, _hero) local _temp = {Logic.GetPlayerEntities(_player, herotable[_hero],1,0) } local _heropos = GetPosition(_temp[2]) local _temp2 = {Logic.GetEntitiesInArea( Entities.XD_Rock3, _heropos.X, _heropos.Y, 500, 60 )}; if _temp2[1] > 0 then EndJob(SchussJobId) if BallSperre == false then RadWinkel = (Winkel( GetPosition("Fussball"), _heropos) /360)*2*math.pi Schussstaerke = 210 Blocked = 0 SchussSound() SchussJobId = StartSimpleHiResJob("SchussJob") VORLAGE_player = LASTSHOT_player VORLAGE_hero = LASTSHOT_hero LASTSHOT_player = _player LASTSHOT_hero = _hero end end gvAna_LangerSchussId[_player][_hero] = AddTribute( CreateATribute(8, "", { Gold = 0}, gvAna_LangerSchussTribute[_player][_hero] ) ) end function KurzerSchuss(_player, _hero) local _temp = {Logic.GetPlayerEntities(_player, herotable[_hero],1,0) } local _heropos = GetPosition(_temp[2]) local _temp2 = {Logic.GetEntitiesInArea( Entities.XD_Rock3, _heropos.X, _heropos.Y, 500, 60 )}; if _temp2[1] > 0 then EndJob(SchussJobId) if BallSperre == false then RadWinkel = (Winkel( GetPosition("Fussball"), _heropos) /360)*2*math.pi Schussstaerke = 130 Blocked = 0 SchussSound() SchussJobId = StartSimpleHiResJob("SchussJob") VORLAGE_player = LASTSHOT_player VORLAGE_hero = LASTSHOT_hero LASTSHOT_player = _player LASTSHOT_hero = _hero end end gvAna_KurzerSchussId[_player][_hero] = AddTribute( CreateATribute(8, "", { Gold = 0}, gvAna_KurzerSchussTribute[_player][_hero] ) ) end function SchussJob() local _oldPos = {} local _newPos = {} if BallSperre == false then _oldPos = GetPosition("Fussball") _newPos.X = math.floor( _oldPos.X - math.cos(RadWinkel)*Schussstaerke + 0.5 ) _newPos.Y = math.floor( _oldPos.Y - math.sin(RadWinkel)*Schussstaerke + 0.5 ) local temp = {Logic.GetEntitiesInArea( 0, _newPos.X, _newPos.Y, 160, 60 )}; if temp[1] > 0 then local _rnd = GetRandom(10) if _rnd > 7 then RadWinkel = (Winkel( GetPosition("Fussball"), GetPosition(temp[2])) /360)*2*math.pi Blocked = Blocked + 1 Schussstaerke = Schussstaerke - 20 elseif _rnd > 5 then RadWinkel = (Winkel( GetPosition("Fussball"), GetPosition(temp[2])) /360)*2*math.pi Blocked = Blocked + 1 Schussstaerke = Schussstaerke - 50 elseif _rnd > 3 then RadWinkel = GetRandom(6.28) else EndJob(SchussJobId) end else if _newPos.X < 3400 or _newPos.X > 16700 or _newPos.Y > 13400 or _newPos.Y < 5900 then if _newPos.X < 3400 or _newPos.X > 16700 then if _newPos.Y > 8800 and _newPos.Y < 10500 then if _newPos.X < 3400 then TORFUNC(1) else TORFUNC(2) end else _newPos.Y = math.floor( _oldPos.Y + math.sin(RadWinkel)*Schussstaerke + 0.5 ) RadWinkel = (Winkel( GetPosition("Fussball"), _newPos) /360)*2*math.pi end else _newPos.X = math.floor( _oldPos.X + math.cos(RadWinkel)*Schussstaerke + 0.5 ) RadWinkel = (Winkel( GetPosition("Fussball"), _newPos) /360)*2*math.pi end Schussstaerke = Schussstaerke - 10 else SetPosition("Fussball",_newPos) Schussstaerke = Schussstaerke - 5 end end else EndJob(SchussJobId) end if Blocked == 5 then --SpielerKicken() end if Schussstaerke <= 0 then EndJob(SchussJobId) end end function SchussSound() local x,y = Camera.ScrollGetLookAt(); local _fussball = GetPosition("Fussball"); local xDistance = (_fussball.X - x); local yDistance = (_fussball.Y - y); local _distance = math.sqrt((xDistance^2) + (yDistance^2)); if _distance < 3400 then Sound.PlayGUISound( Sounds.Military_SO_Cannon_rnd_1 , 100 - _distance/35) end end function TorSound() if TorSoundTimer == 0 or TorSoundTimer == 8 or TorSoundTimer == 16 or TorSoundTimer == 20 or TorSoundTimer == 24 or TorSoundTimer == 32 or TorSoundTimer == 36 or TorSoundTimer == 40 or TorSoundTimer == 44 or TorSoundTimer == 52 or TorSoundTimer == 56 then id = Sound.PlayGUISound( Sounds.Buildings_SO_StonemineCraneUp , 100 ) elseif TorSoundTimer > 58 then return true end TorSoundTimer = TorSoundTimer + 1 end function TORFUNC(_team) Message(" @color:255,255,0 T @color:255,0,255 O @color:0,255,255 R @color:255,128,128 TEAM ".._team) local rnd = GetRandom(5) if _team == XNetwork.GameInformation_GetLogicPlayerTeam( LASTSHOT_player ) then if rnd > 4 then Message(" @color:57,200,255 "..XNetwork.GameInformation_GetLogicPlayerUserName(LASTSHOT_player).." @color:255,255,255 hat mit @color:255,128,128 "..GetHeroNameByID(LASTSHOT_hero).." @color:255,255,255 eingelocht!") elseif rnd > 3 then Message(" @color:57,200,255 "..XNetwork.GameInformation_GetLogicPlayerUserName(LASTSHOT_player).." @color:255,255,255 hats gedreht! Wasn Schuss von @color:255,128,128 "..GetHeroNameByID(LASTSHOT_hero).." @color:255,255,255 !") elseif rnd > 2 then Message(" @color:57,200,255 "..XNetwork.GameInformation_GetLogicPlayerUserName(LASTSHOT_player).." @color:255,255,255 rockt ab! @color:255,128,128 "..GetHeroNameByID(LASTSHOT_hero).." @color:255,255,255 geht ab!") elseif rnd > 1 then Message(" @color:57,200,255 "..XNetwork.GameInformation_GetLogicPlayerUserName(LASTSHOT_player).." @color:255,255,255 zielsicher! @color:255,128,128 "..GetHeroNameByID(LASTSHOT_hero).." @color:255,255,255 macht ihn rein!") else Message(" @color:57,200,255 "..XNetwork.GameInformation_GetLogicPlayerUserName(LASTSHOT_player).." @color:255,255,255 juche! OLE OLE @color:255,128,128 "..GetHeroNameByID(LASTSHOT_hero).." @color:255,255,255 macht ihn rein!") end else if rnd > 4 then Message(" @color:57,200,255 "..XNetwork.GameInformation_GetLogicPlayerUserName(LASTSHOT_player).." @color:255,255,255 hat versagt! Da schoss @color:255,128,128 "..GetHeroNameByID(LASTSHOT_hero).." @color:255,255,255 ins eigene Tor!") elseif rnd > 3 then Message(" @color:57,200,255 "..XNetwork.GameInformation_GetLogicPlayerUserName(LASTSHOT_player).." @color:255,255,255 ist von gestern! @color:255,128,128 "..GetHeroNameByID(LASTSHOT_hero).." @color:255,255,255 spielt wohl fuer den Gegner!") elseif rnd > 2 then Message(" @color:57,200,255 "..XNetwork.GameInformation_GetLogicPlayerUserName(LASTSHOT_player).." @color:255,255,255 OHWEIA! @color:255,128,128 "..GetHeroNameByID(LASTSHOT_hero).." @color:255,255,255 wollt das wohl nicht!") elseif rnd > 1 then Message(" @color:57,200,255 "..XNetwork.GameInformation_GetLogicPlayerUserName(LASTSHOT_player).." @color:255,255,255 hat @color:255,128,128 "..GetHeroNameByID(LASTSHOT_hero).." @color:255,255,255 nicht unter Kontrolle!") else Message(" @color:57,200,255 "..XNetwork.GameInformation_GetLogicPlayerUserName(LASTSHOT_player).." @color:255,255,255 EIGENTOR! Was hat @color:255,128,128 "..GetHeroNameByID(LASTSHOT_hero).." @color:255,255,255 da gemacht?") end end local rnd = GetRandom(5) if _team == XNetwork.GameInformation_GetLogicPlayerTeam( VORLAGE_player ) then if rnd > 4 then Message(" Perfekte Vorlage von @color:57,200,255 "..XNetwork.GameInformation_GetLogicPlayerUserName(VORLAGE_player).."! @color:255,255,255 @color:255,128,128 "..GetHeroNameByID(VORLAGE_hero).." @color:255,255,255 ist ein Held!") elseif rnd > 3 then Message(" Welche Vorlage von @color:57,200,255 "..XNetwork.GameInformation_GetLogicPlayerUserName(VORLAGE_player).."! @color:255,255,255 Der @color:255,128,128 "..GetHeroNameByID(VORLAGE_hero).." @color:255,255,255 hat gepasst!") elseif rnd > 2 then Message(" Vorgelegt von @color:57,200,255 "..XNetwork.GameInformation_GetLogicPlayerUserName(VORLAGE_player).."! @color:255,255,255 Natuerlich von @color:255,128,128 "..GetHeroNameByID(VORLAGE_hero).."!") elseif rnd > 1 then Message(" Perfekter Pass von @color:57,200,255 "..XNetwork.GameInformation_GetLogicPlayerUserName(VORLAGE_player).."! @color:255,255,255 Heldenhafter Einsatz von @color:255,128,128 "..GetHeroNameByID(VORLAGE_hero).."!") else Message(" Zielsicher gepasst, @color:57,200,255 "..XNetwork.GameInformation_GetLogicPlayerUserName(VORLAGE_player).."! @color:255,255,255 Selbstlose Aktion, @color:255,128,128 "..GetHeroNameByID(VORLAGE_hero).."!") end else if rnd > 4 then Message(" Der Ball von @color:57,200,255 "..XNetwork.GameInformation_GetLogicPlayerUserName(VORLAGE_player).." @color:255,255,255 war nix! @color:255,255,255 @color:255,128,128 "..GetHeroNameByID(VORLAGE_hero).." @color:255,255,255 spielt dem Gegner vor die Fuesse!") elseif rnd > 3 then Message(" Was macht @color:57,200,255 "..XNetwork.GameInformation_GetLogicPlayerUserName(VORLAGE_player).." @color:255,255,255 da! @color:255,255,255 Der @color:255,128,128 "..GetHeroNameByID(VORLAGE_hero).." @color:255,255,255 das war wohl nix!") elseif rnd > 2 then Message(" Das gibt Stress fuer @color:57,200,255 "..XNetwork.GameInformation_GetLogicPlayerUserName(VORLAGE_player).."! @color:255,255,255 Meine Guete @color:255,128,128 "..GetHeroNameByID(VORLAGE_hero).." @color:255,255,255 !") elseif rnd > 1 then Message(" Mesch Meier! @color:57,200,255 "..XNetwork.GameInformation_GetLogicPlayerUserName(VORLAGE_player).."! @color:255,255,255 Da wollte @color:255,128,128 "..GetHeroNameByID(VORLAGE_hero).." @color:255,255,255 wohl woanders hin ballern!") else Message(" Das war die falsche Richtung @color:57,200,255 "..XNetwork.GameInformation_GetLogicPlayerUserName(VORLAGE_player).."! @color:255,255,255 @color:255,128,128 "..GetHeroNameByID(VORLAGE_hero).." @color:255,255,255 voll daneben!") end end _Spielstand[_team] = _Spielstand[_team] + 1 Torschuetzen[_team][_Spielstand[_team]] = {} Torschuetzen[_team][_Spielstand[_team]].Minute = math.floor(((Logic.GetTime()) / 60) + 1) Torschuetzen[_team][_Spielstand[_team]].TorTeam = XNetwork.GameInformation_GetLogicPlayerTeam( LASTSHOT_player ) Torschuetzen[_team][_Spielstand[_team]].TorSpieler = XNetwork.GameInformation_GetLogicPlayerUserName(LASTSHOT_player) Torschuetzen[_team][_Spielstand[_team]].TorSpielerID = LASTSHOT_player if _team == Torschuetzen[_team][_Spielstand[_team]].TorTeam then Torschuetzen[_team][_Spielstand[_team]].TorFarbe = gvCol.gruen else Torschuetzen[_team][_Spielstand[_team]].TorFarbe = gvCol.rot end Torschuetzen[_team][_Spielstand[_team]].TorHeld = GetHeroNameByID(LASTSHOT_hero) Torschuetzen[_team][_Spielstand[_team]].VorlageTeam = XNetwork.GameInformation_GetLogicPlayerTeam( VORLAGE_player ) Torschuetzen[_team][_Spielstand[_team]].VorlageSpieler = XNetwork.GameInformation_GetLogicPlayerUserName(VORLAGE_player) Torschuetzen[_team][_Spielstand[_team]].VorlageSpielerID = VORLAGE_player if _team == Torschuetzen[_team][_Spielstand[_team]].VorlageTeam then Torschuetzen[_team][_Spielstand[_team]].VorlageFarbe = gvCol.gruen else Torschuetzen[_team][_Spielstand[_team]].VorlageFarbe = gvCol.rot end Torschuetzen[_team][_Spielstand[_team]].VorlageHeld = GetHeroNameByID(VORLAGE_hero) local ScorerPlayer = {} for i = 1,8 do ScorerPlayer[i] = {} ScorerPlayer[i].Tore = 0 ScorerPlayer[i].VorlagenTore = 0 end for u = 1,2 do for i = 1, table.getn(Torschuetzen[u]) do for v = 1,8 do if Torschuetzen[u][i].TorSpielerID == v and Torschuetzen[u][i].TorTeam == u then ScorerPlayer[v].Tore = ScorerPlayer[v].Tore + 1 ScorerPlayer[v].VorlagenTore = ScorerPlayer[v].VorlagenTore + 1 end if Torschuetzen[u][i].VorlageSpielerID == v and Torschuetzen[u][i].VorlageTeam == u then ScorerPlayer[v].VorlagenTore = ScorerPlayer[v].VorlagenTore + 1 end end end end local Tore = 0 local VorlagenTore = 0 for i = 1,8 do if ScorerPlayer[i].Tore > 0 then if ScorerPlayer[i].Tore > Tore then Tore = ScorerPlayer[i].Tore Torschuetzenkoenig = Tore..": "..XNetwork.GameInformation_GetLogicPlayerUserName(i) elseif ScorerPlayer[i].Tore == Tore then Torschuetzenkoenig = Torschuetzenkoenig.. " "..XNetwork.GameInformation_GetLogicPlayerUserName(i) end end if ScorerPlayer[i].VorlagenTore > 0 then if ScorerPlayer[i].VorlagenTore > VorlagenTore then VorlagenTore = ScorerPlayer[i].VorlagenTore ScorerOfTheGame = VorlagenTore..": "..XNetwork.GameInformation_GetLogicPlayerUserName(i) elseif ScorerPlayer[i].Tore == Tore then ScorerOfTheGame = ScorerOfTheGame.. " "..XNetwork.GameInformation_GetLogicPlayerUserName(i) end end end Message("Es steht ".._Spielstand[1]..":".._Spielstand[2] ) Message("Ball wird freigegeben in 20 Sekunden!") Ballfreigabe = 20 TorJobId = StartSimpleJob("Torjob") TorSoundTimer = 0 StartSimpleHiResJob("TorSound") BallSperre = true local BallLegen = {} BallLegen.X = Mitte.X BallLegen.Y = Mitte.Y while true do local temp = {Logic.GetEntitiesInArea( 0, BallLegen.X, BallLegen.Y, 300, 60 )}; if temp[1] > 0 then BallLegen.X = BallLegen.X + GetRandom(100) - 50 BallLegen.Y = BallLegen.Y + GetRandom(100) - 50 else SetPosition("Fussball",BallLegen) break end --Mitte.X = 8015 --Mitte.Y = 8100 end local _mapname = "Siedlerfussball" MapVersion_Write_Comfort(_mapname, _Spielstand[1]..":".._Spielstand[2]) end function Torjob() Ballfreigabe = Ballfreigabe - 1 if Ballfreigabe < 10 then Message ("Spiel geht weiter in "..Ballfreigabe.." Sekunden") if Ballfreigabe == 0 then BallSperre = false EndJob(TorJobId) end end end function Fouljob() local _Pos = GetPosition("Fussball") local _temp = {Logic.GetEntitiesInArea( 0, _Pos.X, _Pos.Y, 600, 60 )}; if _temp[1] > 1 then local p1 = 0 local p2 = 0 for i = 2,_temp[1]+1 do if XNetwork.GameInformation_GetLogicPlayerTeam(GetPlayer(_temp[i])) == 1 then p1 = p1 + 1 if p1 > 1 then foult1 = foult1 + 1 end if foult1 > 5 then for v = 2,_temp[1]+1 do MoveEntityFussball(_temp[v], 1, 1500) end foult1 = 0 end elseif XNetwork.GameInformation_GetLogicPlayerTeam(GetPlayer(_temp[i])) == 2 then p2 = p2 + 1 if p2 > 1 then foult2 = foult2 + 1 end if foult2 > 5 then for v = 2,_temp[1]+1 do MoveEntityFussball(_temp[v], 2, 1500) end foult2 = 0 end end end end local _temp = {Logic.GetEntitiesInArea( 0, tort1.X, tort1.Y, torrad, 60 )}; if _temp[1] > 2 then local t1 = 0 for i = 2,_temp[1]+1 do if XNetwork.GameInformation_GetLogicPlayerTeam(GetPlayer(_temp[i])) == 1 then t1 = t1 + 1 if t1 > 1 then MoveEntityFussball(_temp[i], 1, 1200) end elseif XNetwork.GameInformation_GetLogicPlayerTeam(GetPlayer(_temp[i])) == 2 then MoveEntityFussball(_temp[i], 2, 1200) end end end local _temp2 = {Logic.GetEntitiesInArea( Entities.XD_Rock3, tort1.X, tort1.Y, torrad, 60 )}; if _temp2[1] > 0 then fussballt1 = fussballt1 - 1 if fussballt1 < 1 then MoveFussballFromGoal(1,_temp2[2]) fussballt1 = 15 end else if fussballt1 < 15 then fussballt1 = fussballt1 + 1 end end local _temp = {Logic.GetEntitiesInArea( 0, tort2.X, tort2.Y, torrad, 60 )}; if _temp[1] > 2 then local t2 = 0 for i = 2,_temp[1]+1 do if XNetwork.GameInformation_GetLogicPlayerTeam(GetPlayer(_temp[i])) == 2 then --XNetwork.GameInformation_GetLogicPlayerTeam(GetPlayer(_temp[i])) == 1 then t2 = t2 + 1 if t2 > 1 then MoveEntityFussball(_temp[i], 2, 1200) end elseif XNetwork.GameInformation_GetLogicPlayerTeam(GetPlayer(_temp[i])) == 1 then MoveEntityFussball(_temp[i], 1, 1200) end end end local _temp2 = {Logic.GetEntitiesInArea( Entities.XD_Rock3, tort2.X, tort2.Y, torrad, 60 )}; if _temp2[1] > 0 then fussballt2 = fussballt2 - 1 if fussballt2 < 1 then MoveFussballFromGoal(2,_temp2[2]) fussballt2 = 15 end else if fussballt2 < 15 then fussballt2 = fussballt2 + 1 end end end function MoveEntityFussball(_eId, _team, _range) local _Pos = GetPosition(_eId) local RadWinkel = GetRandom(6.28) local _newPos = {} _newPos.X = math.floor( _Pos.X - math.cos(RadWinkel)*_range + 0.5 ) _newPos.Y = math.floor( _Pos.Y - math.sin(RadWinkel)*_range+ 0.5 ) if XNetwork.GameInformation_GetLogicPlayerTeam(GetPlayer(_eId)) == _team then for u=0,5 do local _temp2 = {Logic.GetEntitiesInArea( 0, _newPos.X, _newPos.Y, 160, 60 )}; --Message(_temp2[1]) if _temp2[1] == 0 then SetPosition(_eId,_newPos) break end _newPos.X = math.floor( _newPos.X - math.cos(RadWinkel)*200 + 0.5 ) _newPos.Y = math.floor( _newPos.Y - math.sin(RadWinkel)*200 + 0.5 ) end end end function MoveFussballFromGoal(_goalId,_eId) local _Pos = GetPosition(_eId) local RadWinkel = GetRandom(6.28) local _newPos = {} if _goalId == 1 then _newPos.X = math.floor( _Pos.X - math.abs(math.cos(RadWinkel)*2000) + 0.5 ) else _newPos.X = math.floor( _Pos.X + math.abs(math.cos(RadWinkel)*2000) + 0.5 ) end _newPos.Y = math.floor( _Pos.Y - math.sin(RadWinkel)*2000+ 0.5 ) for u=0,5 do local _temp2 = {Logic.GetEntitiesInArea( 0, _newPos.X, _newPos.Y, 160, 60 )}; if _temp2[1] == 0 then SetPosition(_eId,_newPos) break end _newPos.X = math.floor( _newPos.X - math.cos(RadWinkel)*200 + 0.5 ) _newPos.Y = math.floor( _newPos.Y - math.sin(RadWinkel)*200 + 0.5 ) end end function SpielerKicken() local _ballpos = GetPosition("Fussball") local _temp = {Logic.GetEntitiesInArea( 0, _ballpos.X, _ballpos.Y, 1000, 60 )}; SpielerKick = {} local u = 1 for i = 2, _temp[1]+1 do local _eT = Logic.GetEntityType(temp[i]) if _eT == Entities.PU_Hero1 or _eT == Entities.PU_Hero2 or _eT == Entities.PU_Hero3 or _eT == Entities.PU_Hero4 or _eT == Entities.PU_Hero5 or _eT == Entities.PU_Hero6 or _eT == Entities.CU_BlackKnight or _eT == Entities.CU_Mary_de_Mortfichet or _eT == Entities.CU_Barbarian_Hero or _eT == Entities.CU_Evil_Queen or _eT == Entities.PU_Hero10 or _eT == Entities.PU_Hero11 then SpielerKick[u] = {} SpielerKick[u].Id = _temp[i] SpielerKick[u].Pos = GetPosition(_temp[i]) SpielerKick[u].RadWinkel = (Winkel( GetPosition(SpielerKick[u].Id), GetPosition("Fussball") ) /360)*2*math.pi u = u + 1 end end Kickstaerke = 1000 --Message("Job Starten"..SpielerKick[1].Id) KickJobId = StartSimpleHiResJob("KickJob") end function KickJob() for i = 1, table.getn(SpielerKick) do SpielerKick[i].Pos.X = math.floor( SpielerKick[i].Pos.X - math.cos(SpielerKick[i].RadWinkel)*Kickstaerke + 0.5 ) SpielerKick[i].Pos.Y = math.floor( SpielerKick[i].Pos.Y - math.sin(SpielerKick[i].RadWinkel)*Kickstaerke + 0.5 ) SetPosition(SpielerKick[i].Pos) end Kickstaerke = Kickstaerke - 1000 if Kickstaerke <= 0 then EndJob(KickJobId) end end function Winkel(_Pos1,_Pos2) local delta_X = 0; local delta_Y = 0; local alpha = 0 if type (_Pos1) == "string" or type (_Pos1) == "number" then _Pos1 = GetPosition(GetEntityId(_Pos1)); end if type (_Pos2) == "string" or type (_Pos2) == "number" then _Pos2 = GetPosition(GetEntityId(_Pos2)); end delta_X = _Pos1.X - _Pos2.X delta_Y = _Pos1.Y - _Pos2.Y if delta_X == 0 and delta_Y == 0 then -- Gleicher Punkt return 0 end alpha = math.deg(math.asin(math.abs(delta_X)/(math.sqrt(__pow(delta_X, 2)+__pow(delta_Y, 2))))) if delta_X >= 0 and delta_Y > 0 then alpha = 270 - alpha elseif delta_X < 0 and delta_Y > 0 then alpha = 270 + alpha elseif delta_X < 0 and delta_Y <= 0 then alpha = 90 - alpha elseif delta_X >= 0 and delta_Y <= 0 then alpha = 90 + alpha end return alpha end function Setup_GUIHacks() GUIAction_Hero1SendHawk = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_KurzerSchussId[_guiplayer][1] ) end GUIAction_Hero1ProtectUnits = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_LangerSchussId[_guiplayer][1] ) end GUIAction_Hero2PlaceBomb = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_KurzerSchussId[_guiplayer][2] ) end GUIAction_Hero2BuildCannon = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_LangerSchussId[_guiplayer][2] ) end GUIAction_Hero3BuildTrap = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_KurzerSchussId[_guiplayer][3] ) end GUIAction_Hero3Heal = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_LangerSchussId[_guiplayer][3] ) end GUIAction_Hero4CircularAttack = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_KurzerSchussId[_guiplayer][4] ) end GUIAction_Hero4AuraOfWar = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_LangerSchussId[_guiplayer][4] ) end GUIAction_Hero5Camouflage = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_KurzerSchussId[_guiplayer][5] ) end GUIAction_Hero5Summon = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_LangerSchussId[_guiplayer][5] ) end GUIAction_Hero6ConvertSettlers = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_KurzerSchussId[_guiplayer][6] ) end GUIAction_Hero6Bless = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_LangerSchussId[_guiplayer][6] ) end GUIAction_Hero7InflictFear = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_KurzerSchussId[_guiplayer][7] ) end GUIAction_Hero7Madness = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_LangerSchussId[_guiplayer][7] ) end GUIAction_Hero8Poison = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_KurzerSchussId[_guiplayer][8] ) end GUIAction_Hero8MoraleDamage = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_LangerSchussId[_guiplayer][8] ) end GUIAction_Hero9CallWolfs = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_KurzerSchussId[_guiplayer][9] ) end GUIAction_Hero9Berserk = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_LangerSchussId[_guiplayer][9] ) end GUIAction_Hero10SniperAttack = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_KurzerSchussId[_guiplayer][10] ) end GUIAction_Hero10LongRangeAura = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_LangerSchussId[_guiplayer][10] ) end GUIAction_Hero11Shuriken = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_KurzerSchussId[_guiplayer][11] ) end GUIAction_Hero11FireworksFear = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_LangerSchussId[_guiplayer][11] ) end GUIAction_Hero11FireworksMotivate = function() end GUIAction_Hero12PoisonRange = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_KurzerSchussId[_guiplayer][12] ) end GUIAction_Hero12PoisonArrow = function() local _guiplayer = GUI.GetPlayerID() GUI.PayTribute( 8, gvAna_LangerSchussId[_guiplayer][12] ) end GUITooltip_NormalButton_Orig = GUITooltip_NormalButton GUITooltip_NormalButton = function(_a,_b) local _text = "" local found = false if _a == "MenuHero2/command_bomb" then _text = gvCol.gelb.." Kurzer Schuss" _found = true elseif _a == "MenuHero2/command_buildcannon" then _text = gvCol.rot.." Langer Schuss" _found = true elseif _a == "MenuHero3/command_buildTrap" then _text = gvCol.gelb.." Kurzer Schuss" _found = true elseif _a == "MenuHero3/command_heal" then _text = gvCol.rot.." Langer Schuss" _found = true elseif _a == "MenuHero4/command_circularattack" then _text = gvCol.gelb.." Kurzer Schuss" _found = true elseif _a == "MenuHero4/command_auraofwar" then _text = gvCol.rot.." Langer Schuss" _found = true elseif _a == "MenuHero5/command_camouflage" then _text = gvCol.gelb.." Kurzer Schuss" _found = true elseif _a == "MenuHero5/command_summon" then _text = gvCol.rot.." Langer Schuss" _found = true elseif _a == "MenuHero6/command_convertbuilding" then _text = gvCol.gelb.." Kurzer Schuss" _found = true elseif _a == "MenuHero6/command_bless" then _text = gvCol.rot.." Langer Schuss" _found = true elseif _a == "MenuHero7/command_inflictFear" then _text = gvCol.gelb.." Kurzer Schuss"; _found = true; elseif _a == "MenuHero7/command_madness" then _text = gvCol.rot.." Langer Schuss"; _found = true; elseif _a == "MenuHero8/command_poison" then _text = gvCol.gelb.." Kurzer Schuss"; _found = true; elseif _a == "MenuHero8/command_moraledamage" then _text = gvCol.rot.." Langer Schuss"; _found = true; elseif _a == "MenuHero9/command_callwolfs" then _text = gvCol.gelb.." Kurzer Schuss"; _found = true; elseif _a == "MenuHero9/command_berserk" then _text = gvCol.rot.." Langer Schuss"; _found = true; elseif _a == "AOMenuHero10/command_sniperattack" then _text = gvCol.gelb.." Kurzer Schuss"; _found = true; elseif _a == "AOMenuHero10/command_longrangeaura" then _text = gvCol.rot.." Langer Schuss"; _found = true; elseif _a == "AOMenuHero11/command_Shuriken" then _text = gvCol.gelb.." Kurzer Schuss"; _found = true; elseif _a == "AOMenuHero11/command_FireworksFear" then _text = gvCol.rot.." Langer Schuss"; _found = true; elseif _a == "AOMenuHero12/command_PoisonRange" then _text = gvCol.gelb.." Kurzer Schuss"; _found = true; elseif _a == "AOMenuHero12/command_poisonarrows" then _text = gvCol.rot.." Langer Schuss" _found = true end if _found == true then XGUIEng.SetText( gvGUI_WidgetID.TooltipBottomText,_text); -- 1 then for _teamplayerID = 1, _humenPlayer do local _teamplayer = XNetwork.GameInformation_GetLogicPlayerTeam( _teamplayerID ) for _oppoPlayerID = 1, _humenPlayer do if _teamplayerID ~= OppoPlayer then local _oppoPlayer = XNetwork.GameInformation_GetLogicPlayerTeam( _oppoPlayerID ) if _teamplayer == _oppoPlayer then Logic.SetDiplomacyState( _oppoPlayerID, _teamplayerID, Diplomacy.Friendly ) else Logic.SetDiplomacyState( _oppoPlayerID, _teamplayerID, Diplomacy.Neutral ) end end end end end end end function MapVersion_Write_Comfort(_mapname, _stand) g_MC_VT = "@color:255,128,128 @cr ".._mapname.." @cr @cr Spielstand: @cr ".._stand MapVersion_InitMapInfoButton( g_MC_VT ) end function MapVersion_InitMapInfoButton( _text) if type(_text) == "string" then XGUIEng.SetText( "TopMainMenuTextButton", "@color:0,0,0,0: ....... @color:255,255,255 Menü @cr @cr ".._text) else XGUIEng.SetText( "TopMainMenuTextButton", "@color:0,0,0,0: ....... @color:255,255,255 Menü @cr @cr Hier die Mapversion und sonstige Infos einfügen") end end -- Tributfunktionen function AddTribute( _tribute ) assert( type( _tribute ) == "table", "Tribut muß ein Table sein" ); assert( type( _tribute.text ) == "string", "Tribut.text muß ein String sein" ); assert( type( _tribute.cost ) == "table", "Tribut.cost muß ein Table sein" ); assert( type( _tribute.playerId ) == "number", "Tribut.playerId muß eine Nummer sein" ); assert( not _tribute.Tribute , "Tribut.Tribute darf nicht vorbelegt sein"); uniqueTributeCounter = uniqueTributeCounter or 1; _tribute.Tribute = uniqueTributeCounter; uniqueTributeCounter = uniqueTributeCounter + 1; local tResCost = {}; for k, v in pairs( _tribute.cost ) do assert( ResourceType[k] ); assert( type( v ) == "number" ); table.insert( tResCost, ResourceType[k] ); table.insert( tResCost, v ); end Logic.AddTribute( _tribute.playerId, _tribute.Tribute, 0, 0, _tribute.text, unpack( tResCost ) ); SetupTributePaid( _tribute ); return _tribute.Tribute; end function CreateATribute(_playerID, _text, _cost, _callback) local tribute = {}; tribute.playerId = _playerID; tribute.text = _text; tribute.cost = _cost; tribute.Callback = _callback; return tribute end function GameCallback_FulfillTribute() return 1 end function GetHeroNameByID(_ID) if _ID == 1 then return "Dario"; end if _ID == 2 then return "Pilgrim"; end if _ID == 3 then return "Salim"; end if _ID == 4 then return "Erec"; end if _ID == 5 then return "Ari"; end if _ID == 6 then return "Helias"; end if _ID == 7 then return "Kerberos"; end if _ID == 8 then return "Mary"; end if _ID == 9 then return "Varg"; end if _ID == 10 then return "Drake"; end if _ID == 11 then return "Yuki"; end if _ID == 12 then return "Kala"; end end function SetPeacetime( _seconds ) ---hier wird die Funktion special peacetime gestartet SpecialPeacetime(); StartCountdown( _seconds, PeacetimeEnd, true ); end function PeacetimeEnd() MultiplayerTools.SetUpDiplomacyOnMPGameConfig() PeaceTimeEndActions() end function SpecialPeacetime() -- Anzahl der menschlichen Spieler wird hier ermittelt local _humenPlayer = XNetwork.GameInformation_GetMapMaximumNumberOfHumanPlayer() -- Abfrage ob Standardsituation gegeben ist das jeder sich mit jedem verbünden kann if XNetwork.GameInformation_GetFreeAlliancesFlag() == 1 then -- Feststellung wer mit wem verbündet ist und Festlegung des Diplomatistatus für die Peacetime if _humenPlayer > 1 then for _teamplayerID = 1, _humenPlayer do local _teamplayer = XNetwork.GameInformation_GetLogicPlayerTeam( _teamplayerID ) for _oppoPlayerID = 1, _humenPlayer do if _teamplayerID ~= OppoPlayer then local _oppoPlayer = XNetwork.GameInformation_GetLogicPlayerTeam( _oppoPlayerID ) if _teamplayer == _oppoPlayer then Logic.SetDiplomacyState( _oppoPlayerID, _teamplayerID, Diplomacy.Friendly ) else Logic.SetDiplomacyState( _oppoPlayerID, _teamplayerID, Diplomacy.Neutral ) end end end end end end end --Countdown Comfort Funktionen function StartCountdown(_Limit, _Callback, _Show) assert(type(_Limit) == "number") Counter.Index = (Counter.Index or 0) + 1 if _Show and CountdownIsVisisble() then assert(false, "StartCountdown: A countdown is already visible") end Counter["counter" .. Counter.Index] = {Limit = _Limit, TickCount = 0, Callback = _Callback, Show = _Show, Finished = false} if _Show then MapLocal_StartCountDown(_Limit) end if Counter.JobId == nil then Counter.JobId = StartSimpleJob("CountdownTick") end return Counter.Index end function StopCountdown(_Id) if Counter.Index == nil then return end if _Id == nil then for i = 1, Counter.Index do if Counter.IsValid("counter" .. i) then if Counter["counter" .. i].Show then MapLocal_StopCountDown() end Counter["counter" .. i] = nil end end else if Counter.IsValid("counter" .. _Id) then if Counter["counter" .. _Id].Show then MapLocal_StopCountDown() end Counter["counter" .. _Id] = nil end end end function CountdownTick() local empty = true for i = 1, Counter.Index do if Counter.IsValid("counter" .. i) then if Counter.Tick("counter" .. i) then Counter["counter" .. i].Finished = true end if Counter["counter" .. i].Finished and not IsBriefingActive() then if Counter["counter" .. i].Show then MapLocal_StopCountDown() end -- callback function if type(Counter["counter" .. i].Callback) == "function" then Counter["counter" .. i].Callback() end Counter["counter" .. i] = nil end empty = false end end if empty then Counter.JobId = nil Counter.Index = nil return true end end function CountdownIsVisisble() for i = 1, Counter.Index do if Counter.IsValid("counter" .. i) and Counter["counter" .. i].Show then return true end end return false end function MovieFenster( _title, _text, _WPinternal ) if gvWP then if _WPinternal then -- MovieFenster wird vom Itm-Skript aufgerufen gvWP.MF.internalUse = true; MovieFensterCore( _title, _text ); else -- ... vom Mapper gvWP.MF.externalUse = true; gvWP.MF.BACKUPextTitle = _title; gvWP.MF.BACKUPextText = _text; if not gvWP.MF.internalUse then MovieFensterCore( _title, _text ); end end else MovieFensterCore( _title, _text ); end end function MovieFensterCore( _title, _text ) XGUIEng.ShowWidget( "Movie", 1 ); XGUIEng.ShowWidget( "Cinematic_Text", 0 ); XGUIEng.ShowWidget( "MovieBarTop", 0 ); XGUIEng.ShowWidget( "MovieBarBottom", 0 ); XGUIEng.ShowWidget( "MovieInvisibleClickCatcher", 0 ); XGUIEng.ShowWidget( "CreditsWindowLogo", 0 ); XGUIEng.SetText( "CreditsWindowTextTitle", _title ); XGUIEng.SetText( "CreditsWindowText", _text ); end function HideMovieFenster( _WPinternal ) if gvWP then if _WPinternal then -- HideMovieFenster wird vom Itm-Skript aufgerufen gvWP.MF.internalUse = false; if gvWP.MF.externalUse then MovieFensterCore( gvWP.MF.BACKUPextTitle, gvWP.MF.BACKUPextText ); else HideMovieFensterCore(); end else -- ... vom Mapper gvWP.MF.externalUse = false; if not gvWP.MF.internalUse then HideMovieFensterCore(); end end else HideMovieFensterCore(); end end function HideMovieFensterCore() XGUIEng.ShowWidget( "Movie", 0 ); end function WPUpdateFeedback() -- Funktion aus ItM made by Noigi if not (IsBriefingActive() or cutsceneIsActive) then local _text = "" if XGUIEng.IsModifierPressed(Keys.ModifierAlt) == 1 then _text = _text..gvCol.orange.." Scorer: "..gvCol.weiss.." "..ScorerOfTheGame.." @cr " _text = _text..gvCol.orange.." Torkoenig: "..gvCol.weiss.." "..Torschuetzenkoenig.." @cr " _text = _text..gvCol.orange.." Tore des Spiels / Vorlage @cr " for u = 1,2 do for i = 1, table.getn(Torschuetzen[u]) do _text = _text..gvCol.orange.." Team"..u..": "..gvCol.weiss.." "..Torschuetzen[u][i].Minute.."min "..Torschuetzen[u][i].TorFarbe.." "..Torschuetzen[u][i].TorSpieler.." "..Torschuetzen[u][i].VorlageFarbe.." "..Torschuetzen[u][i].VorlageSpieler.." @cr " end end MovieFenster(gvCol.space..": ....... "..gvCol.gruen.." Spielstand: "..gvCol.gruen.." ".._Spielstand[1]..":".._Spielstand[2],_text,true); else HideMovieFenster(true); end else HideMovieFenster(true); end end function Comfort_TrackEntitysIni() Track_Entity_Table = {} for i = 1,8 do Track_Entity_Table[i] = {} end Comfort_TrackEntityIni = function(_pId,_eType) local temp = {Logic.GetPlayerEntities(_pId, _eType,1)} local count = 0 Track_Entity_Table[_pId][_eType] = {} Track_Entity_Table[_pId][_eType].tracked = true Track_Entity_Table[_pId][_eType].count = 0 if temp[1] > 0 then local latestEntity = temp[2] for u = 1, Logic.GetNumberOfEntitiesOfTypeOfPlayer(_pId, _eType) do if latestEntity ~= 0 then table.insert(Track_Entity_Table[_pId][_eType], latestEntity) count = count + 1 end latestEntity = Logic.GetNextEntityOfPlayerOfType(latestEntity); end Track_Entity_Table[_pId][_eType].count = count end end Comfort_TrackEntity_Created = function(_eId) local _pId = GetPlayer(_eId) local _eType = Logic.GetEntityType(_eId) if Comfort_TrackEntity_IsTracked(_pId,_eType) then if Track_Entity_Table[_pId][_eType].tracked then table.insert(Track_Entity_Table[_pId][_eType], _eId) Track_Entity_Table[_pId][_eType].count = Track_Entity_Table[_pId][_eType].count + 1 end end end Comfort_TrackEntity_Destroyed = function(_eId) local _pId = GetPlayer(_eId) local _eType = Logic.GetEntityType(_eId) if Comfort_TrackEntity_IsTracked(_pId,_eType) then for i = 1, Track_Entity_Table[_pId][_eType].count do if _eId == Track_Entity_Table[_pId][_eType][i] then table.remove(Track_Entity_Table[_pId][_eType], i) break end end end end Comfort_TrackEntity_IsTracked = function(_pId, _eType, _TypeOrId) if _TypeOrId == false then _eType = Logic.GetEntityType(_eTypeOrId) end if type(Track_Entity_Table[_pId]) == "table" then if type(Track_Entity_Table[_pId][_eType]) == "table" then else return false end else return false end return Track_Entity_Table[_pId][_eType].tracked end Comfort_TrackEntity_RemoveTracking = function(_pId, _eType) Track_Entity_Table[_pId][_eType] = {} Track_Entity_Table[_pId][_eType].tracked = false Track_Entity_Table[_pId][_eType].count = -1 end end end function Globale_Hilfsvariablen() gvCol = { weiss = "@color:255,255,255", schwarz = "@color:0,0,0", rot = "@color:255,0,0", gelb = "@color:255,232,0", gruen = "@color:0,255,0", dunkelgruen = "@color:0,100,0", blau = "@color:0,0,255", lila = "@color:200,0,200", grau = "@color:150,150,150", tuerkis = "@color:0,180,180", orange = "@color:255,130,0", beige = "@color:190,190,150", hellgrau = "@color:170,170,170", dunkelgrau = "@color:120,120,120", TTgelb = "@color:255,200,0", TTrot = "@color:200,60,0", TUTgruen = "@color:90,190,20", space = "@color:0,0,0,0", } end