Thema: Koop-Karten für 4 Spieler
-
18.08.2012, 16:02 #1
Koop-Karten für 4 Spieler
Hi Leute
Bin jetzt schon seid 3 Jahren großer Siedler 5-Fan doch bei diesem Problem bin ich mit meinem Skriptlatein am Ende:
Wollte mit ein paar Freunden mal wieder Siedler zusammenspielen, jedoch hatten wir keine Lust uns gegenseitig abzuschlachten und kamen schließlich auf Kooperations-Karten zu sprechen. Jetzt meine Frage:
Ist es möglich für 4 Spieler (anstelle von sonst 2) ein Kooperation-Skript zu entwerfen und wenn ja, wie kann ich das Skriptbeispiel aus dem Wiki am effektivsten umschreiben, damit wir alle zusammen eine Allianz bilden können?
Vielen Dank im Voraus!
P.S.
Karte hab ich schon. Nur noch das Skript fehlt
-
19.08.2012, 00:40 #2
AW: Koop-Karten für 4 Spieler
wird es da nicht was Langweilig, wenn alle nur zusammen "Aufbauen", und sonst nix zu verteidigen oder zu erobern haben ??
trabbi
Was ist Theorie, - Wenns klappen soll und es klappt nie
Was ist Praxis, - Frag nicht so dumm, wenns klappt und Du weißt nicht warum
-
19.08.2012, 12:40 #3
AW: Koop-Karten für 4 Spieler
Einen Aufbau soll es schon geben, trotzdem war natürlich die Bekämpfung mehrerer Feinde geplant. Würde halt nur gerne in einem Team mit meinen Leuten sein (geteilte Sicht, Ressis schicken ect.). Was die KI anbelangt habe ich dort schon ziemlich genaue Vorstellungen. Wäre cool wenn ihr mir sagen könntet wie man das zustande bringt, ohne das nervige Abstürze oder Skriptfehler das Game stören
-
19.08.2012, 15:21 #4
AW: Koop-Karten für 4 Spieler
Ich habe den Coop-Code aus dem Wiki übernommen und oben Variablen eingefügt, bei denen du die Anzahl der menschlichen Mitspieler, den Namen des Feindes und den Skriptnamen seines HQs eintragen kannst. Der Code ist nicht getestet - wenn etwas nicht klappt, melde dich nochmal!
Code:-------------------------------------------------------------------------------- -- MapName: xxxxxxxxxxx. -- -- Author: Spiderfive Danke an chromix für die Unterstützung -- Coop Referencescript für zwei Spieler, Diese spielen gegen eine bestimmte Anzahl an KI Spieler -- Man muß im Editor beim Kartenscriptassistenten nur die zwei menschlichen Spieler festlegen, damit auch nur diese zwei Plätze später in der Lobby angezeigt werden. -- Beim Start in der MP Lobby oder im Lan kann man beide Spieler in unterschiedlichen Teams stehen lassen , nach dem Start werden sie im Game verbündet sein . -- Bei dieser Map sind auch die MP Bugtools von chromix eingebaut Enable Alarmlimit und enable overtimelimit -------------------------------------------------------------------------------- -- Hiermit wird die Lobbyfunktion umgangen, so dass die beiden menschlichen Spieler nach dem Start verbündet sind und auch das Gebiet des anderen sehen if XNetwork then XNetwork.GameInformation_GetLogicPlayerTeam = function() return 1; end XNetwork.GameInformation_GetFreeAlliancesFlag = function() return 1; end end -------------------------------------------------------------------------------- -- Hier Spieleranzahl anpassen! COOP_NUMBER_OF_PLAYERS = 4; -- Name des Feindes COOP_HOSTILE_PLAYER_NAME = "Feind"; -- Name des feindlichen HQ COOP_HOSTILE_HQ = "P3_AI_HQ"; -- Spieler-ID des Feindes COOP_HOSTILE_PLAYER_ID = (COOP_NUMBER_OF_PLAYERS + 1); -------------------------------------------------------------------------------- function GameCallback_OnGameStart() -- Include global tool script functions Script.Load(Folders.MapTools.."Ai\\Support.lua") Script.Load( Folders.MapTools.."Main.lua" ) -- Unbedingt muß für die Einbindung der Ki hier auch dieses am Anfang geladen werden IncludeGlobals("MapEditorTools") Script.Load( "Data\\Script\\MapTools\\Counter.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") -- notwendig damit die Siegbedingungen greifen gvMission = {} gvMission.PlayerID = GUI.GetPlayerID() --Init local map stuff Mission_InitWeatherGfxSets() InitWeather() Mission_InitGroups() Mission_InitLocalResources() -- Init global MP stuff --MultiplayerTools.InitResources("normal") MultiplayerTools.InitCameraPositionsForPlayers() MultiplayerTools.SetUpGameLogicOnMPGameConfig() MultiplayerTools.GiveBuyableHerosToHumanPlayer( 8 ) -- 8 Helden pro Spieler StartSimpleJob("VictoryJob") -- Alarmlimit: Diese Funktion bewirkt, daß der Alarm mindestens 60 Sekunden aktiviert bleibt EnableAlarmLimit(); -- Überstundenlimit: Diese Funktion bewirkt, daß die Überstunden in einem Gebäude mindestens 60 Sekunden aktiviert bleiben. --Hier durch tritt der reguläre Motivationsverlust bei längerer Arbeitszeit in Kraft. EnableOvertimeLimit(); if XNetwork.Manager_DoesExist() == 0 then for i = 1,COOP_NUMBER_OF_PLAYERS do MultiplayerTools.DeleteFastGameStuff(i) end local PlayerID = GUI.GetPlayerID() Logic.PlayerSetIsHumanFlag( PlayerID, 1 ) Logic.PlayerSetGameStateToPlaying( PlayerID ) end -- Die weiteren menschlichen Spieler müssen auf Feind gestellt werden so dies gewünscht ist zu allen KI's for i = 1,COOP_NUMBER_OF_PLAYERS do SetHostile( i, COOP_HOSTILE_PLAYER_ID ); end LocalMusic.UseSet = HIGHLANDMUSIC --Befehlsatz einfach Kommentierung durch entfernen der beiden Bindestriche rausnehmen -- nicht vergessen das jeweils nur ein Set gesetzt sein sollte --LocalMusic.UseSet = EUROPEMUSIC --LocalMusic.UseSet = HIGHLANDMUSIC --LocalMusic.UseSet = MEDITERANEANMUSIC --LocalMusic.UseSet = DARKMOORMUSIC --LocalMusic.UseSet = EVELANCEMUSIC -- Diese Zeilen kommen noch vom Karteneditor und setzen die Standardsiegbedingung vernicht die Player Id MapEditor_SetupDestroyVictoryCondition(COOP_HOSTILE_PLAYER_ID) MapEditor_CreateHQDefeatCondition() -- Hier gehts mit den Parametern für den KI Spieler los. In diesem Fall Spieler COOP_HOSTILE_PLAYER_ID, denn Spieler 2 ist ja der 2. menschliche Spieler -- Man kann diese Werte natürlich auch direkt in die Funktion eintragen, -- anstatt sie wie hier übersichtlich aufzulisten --Nächste Ki local aiID = COOP_HOSTILE_PLAYER_ID; local strength = 3; local range = 6000; local techlevel = 3; local position = COOP_HOSTILE_HQ; local aggressiveness = 3; local peacetime = 2400; MapEditor_SetupAI( aiID, strength, range, techlevel, position, aggressiveness, peacetime ); SetupPlayerAi( aiID, { extracting = 1, repairing = 1 } ); SetPlayerName( aiID, COOP_HOSTILE_PLAYER_NAME ); --Der Teil hier ist nur wichtig wenn man gezielt die Ressourcen bestimmen möchte die die Ki bekommt. -- Falls man dies nicht möchte, kann dieser Teil weggelassen werden -- Die Parmeter sollten individuelle angpasst werden SetupPlayerAi( COOP_HOSTILE_PLAYER_ID, { resources = { gold = 10000, clay = 100, iron = 1500, sulfur = 1500, stone = 100, wood = 100, } } ); SetupPlayerAi( COOP_HOSTILE_PLAYER_ID, { refresh = { gold = 10000, clay = 1000, iron = 1500, sulfur = 1500, stone = 100, wood = 100, updateTime = 1000 } } ); end --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- This function is called on game start and after save game is loaded, setup your weather gfx -- sets here function Mission_InitWeatherGfxSets() -- Use gfx sets SetupHighlandWeatherGfxSet() --Befehlsatz einfach Kommentierung durch entfernen der beiden Bindestriche rausnehmen nicht vergessen das man nur ein setzten sollte --SetupNormalWeatherGfxSet() --SetupHighlandWeatherGfxSet() --SetupSteppeWeatherGfxSet() --SetupMoorWeatherGfxSet() --SetupEvelanceWeatherGfxSet() end --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- This function is called on game start you should setup your weather periods here function InitWeather() -- Hier wird der Wetterwechsel festgelegtl -- Beispiel 4 Min Sommer, dann 2 Minuten Winter, dann wieder alles von vorne AddPeriodicSummer(240) AddPeriodicWinter(120) --Befehlsatz einfach Kommentierung durch entfernen der beiden Bindestriche rausnehmen --AddPeriodicSummer(600) --AddPeriodicWinter(300) --AddPeriodicRain(120) end --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Build Groups and attach Leaders function Mission_InitGroups() end --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Limit the Technologies here. For example Weathermashine. function Mission_InitTechnologies() --no limitation in this map end --++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -- Set local resources function Mission_InitLocalResources() local HumenPlayer = XNetwork.GameInformation_GetMapMaximumNumberOfHumanPlayer() -- Dies sind die Startresourcen für alle Spieler. Diese sollten angepasst werden local InitGoldRaw = 1500 local InitClayRaw = 1000 local InitWoodRaw = 1000 local InitStoneRaw = 200 local InitIronRaw = 200 local InitSulfurRaw = 200 --Add Players Resources for i = 1, 8 do Tools.GiveResouces(i, InitGoldRaw , InitClayRaw,InitWoodRaw, InitStoneRaw,InitIronRaw,InitSulfurRaw) -- Hier werden die Technologien vorgegeben -- Beispiel Mathematik, Konstruktion und Sprengfähigkeit des Dieben ResearchTechnology(Technologies.GT_Mathematics,i) ResearchTechnology(Technologies.GT_Construction,i) ResearchTechnology(Technologies.T_ThiefSabotage,i) ResearchTechnology(Technologies.GT_Mercenaries, i) -->Wehrpflicht --Befehlsatz einfach Kommentierung durch entfernen der beiden Bindestriche rausnehmen --Unitechnologien --ResearchTechnology(Technologies.GT_Mercenaries, i) -->Wehrpflicht --ResearchTechnology(Technologies.GT_StandingArmy, i) -- -> stehendes Heer --ResearchTechnology(Technologies.GT_Tactics, i)--> Taktiken --ResearchTechnology(Technologies.GT_Strategies, i) ---> Pferdezucht --ResearchTechnology(Technologies.GT_Construction, i) ----> Konstruktion --ResearchTechnology(Technologies.GT_ChainBlock, i) --Flaschenzug --ResearchTechnology(Technologies.GT_GearWheel, i) --Zahnräder --ResearchTechnology(Technologies.GT_Architecture, i) --Architektur --ResearchTechnology(Technologies.GT_Alchemy, i) --Alchimie --ResearchTechnology(Technologies.GT_Alloying, i) --Legierungen --ResearchTechnology(Technologies.GT_Metallurgy, i) --Metallurgie --ResearchTechnology(Technologies.GT_Chemistry, i) --Chemie --ResearchTechnology(Technologies.GT_Taxation, i) -- --ResearchTechnology(Technologies.GT_Trading, i) --Handelswesen --ResearchTechnology(Technologies.GT_Banking, i) -- --ResearchTechnology(Technologies.GT_Gilds, i) -- --ResearchTechnology(Technologies.GT_Literacy, i) --Bildung --ResearchTechnology(Technologies.GT_Printing, i) --Buchdruck --ResearchTechnology(Technologies.GT_Laws, i) -- --ResearchTechnology(Technologies.GT_Library, i) --Büchereien --ResearchTechnology(Technologies.GT_Mathematics, i) --Mathematik --ResearchTechnology(Technologies.GT_Binocular, i) -- Ferngläser --ResearchTechnology(Technologies.GT_Matchlock, i) --Luntenschloss --ResearchTechnology(Technologies.GT_PulledBarrel, i) --gezogener Lauf --ResearchTechnology(Technologies.T_ChangeWeather, i) --ResearchTechnology(Technologies.T_WeatherForecast,i) --ResearchTechnology(Technologies.T_ThiefSabotage,i) --ResearchTechnology(Technologies., i) --ResearchTechnology(Technologies., i) end end -- victory funktion muß bei coop sein -- Hier wird die Siegbedingung vorgegeben function VictoryJob() if IsDead(COOP_HOSTILE_HQ) then Victory(); return true; end end -- Dies sind die Funktion für den Alarm/Überstunden Fix -- Diese brauchen nicht verändert werden, können aber (zusammen mit ihrem Aufruf) entfernt werden, sofern sie nicht benötigt werden function EnableAlarmLimit() GUIAction_ActivateAlarmOrig = GUIAction_ActivateAlarm; GUIAction_ActivateAlarm = function() alarmWait = Logic.GetCurrentTurn() + 600; GUIAction_ActivateAlarmOrig(); end GUIAction_QuitAlarmOrig = GUIAction_QuitAlarm; GUIAction_QuitAlarm = function() local turns = Logic.GetCurrentTurn(); if turns >= alarmWait then GUIAction_QuitAlarmOrig(); else Sound.PlayFeedbackSound( Sounds.VoicesWorker_WORKER_FunnyNo_rnd_10, 0 ); Message( "Der Alarm kann erst in " .. math.floor( ( alarmWait - turns ) / 10 ) .. " Sekunden wieder aufgehoben werden." ); end end end function EnableOvertimeLimit() tOvertimes = {}; GUI.ToggleOvertimeAtBuildingOrig = GUI.ToggleOvertimeAtBuilding; GUI.ToggleOvertimeAtBuilding = function( _id ) LimitOvertime( _id, GUI.ToggleOvertimeAtBuildingOrig ); end GUI.ForceSettlerToWorkOrig = GUI.ForceSettlerToWork; GUI.ForceSettlerToWork = function( _id ) LimitOvertime( _id, GUI.ToggleOvertimeAtBuildingOrig ); end LimitOvertime = function( _id, _func ) local knowntime = tOvertimes[_id]; local turns = Logic.GetCurrentTurn(); if not knowntime or turns > knowntime then _func( _id ); tOvertimes[_id] = turns + 600; else Sound.PlayFeedbackSound( Sounds.VoicesWorker_WORKER_FunnyNo_rnd_10, 0 ); Message( "Die Ueberstunden dauern noch mindestens " .. math.floor( ( knowntime - turns ) / 10 ) .. " Sekunden." ); end end end
-
20.08.2012, 18:20 #5
AW: Koop-Karten für 4 Spieler
Danke dir Noigi ;-)
Werde das Skript sofort mal anpassen.
Schade, das es nicht so viele Koop-Karten gibt. Ob man wohl die Erschaffer der Mappack-Karten mal zu einer öffentlichen Version ihrer Werke mit Kooperationsmodus überreden kann?
-
20.08.2012, 19:14 #6
AW: Koop-Karten für 4 Spieler
trabbi
Was ist Theorie, - Wenns klappen soll und es klappt nie
Was ist Praxis, - Frag nicht so dumm, wenns klappt und Du weißt nicht warum
-
20.08.2012, 19:22 #7
AW: Koop-Karten für 4 Spieler
ja andy ist woanders, karlsruhe oder so.
Hatten wir Siedler 5 nicht eh das Problem das nur 6 Spieler (Ki und Mensch) gehen oder verwechsele ich das ?
Man wird halt auch immer vergeßlicher ...Man kann alle Leute einige Zeit zum Narren halten und einige Leute allezeit; aber alle Leute allezeit zum Narren halten kann man nicht. (Abraham Lincoln)
Siedele lang und erfolgreich
-
20.08.2012, 20:07 #8
AW: Koop-Karten für 4 Spieler
Nee...
Bei DEdK können 8 Spieler/Kis auf einer Map "sitzen".
Die Mappack Karten haben meiner Meinung nach großes Potenzial für Koop-Modi (z.B. Robin Hood oder Hochebene ). Aber wenn ich mich recht erinnere ist das Veröffentlichen fremder Maps mit Modifikationen ein absolutes No-Go.
Schade, vllt hätte man zusammen mit den "Erschaffern" einige alte Renner als Kooperations-Maps wiedererwecken können, den diese Art von Karten sind neben guten SP sehr gefragt.
Aktive Benutzer
Aktive Benutzer
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Ähnliche Themen
-
[Blizzard] Szenario-Koop-Kampagne das
Von SpiderFive im Forum AllgemeinAntworten: 3Letzter Beitrag: 14.08.2010, 20:32 -
[C&C] 4players: C&C Alarmstufe Rot 3: Witziger Koop-Trailer
Von SpiderFive im Forum AllgemeinAntworten: 0Letzter Beitrag: 20.11.2008, 15:30
Lesezeichen