Ergebnis 1 bis 8 von 8
  1. #1
    12 of 5 Avatar von CanonFreak
    Registriert seit
    18.08.2012
    Beiträge
    6
    Downloads
    0
    Uploads
    0

    Frage 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

  2. #2
    Lanzenträger Avatar von trabbi
    Registriert seit
    09.03.2006
    Beiträge
    4,968
    Downloads
    1
    Uploads
    0

    Standard 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

  3. #3
    12 of 5 Avatar von CanonFreak
    Registriert seit
    18.08.2012
    Beiträge
    6
    Downloads
    0
    Uploads
    0

    Standard 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

  4. #4
    Holzfäller Avatar von Noigi
    Registriert seit
    31.12.2007
    Beiträge
    121
    Downloads
    0
    Uploads
    0

    Standard 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

  5. #5
    12 of 5 Avatar von CanonFreak
    Registriert seit
    18.08.2012
    Beiträge
    6
    Downloads
    0
    Uploads
    0

    Standard 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?

  6. #6
    Lanzenträger Avatar von trabbi
    Registriert seit
    09.03.2006
    Beiträge
    4,968
    Downloads
    1
    Uploads
    0

    Standard AW: Koop-Karten für 4 Spieler

    Zitat Zitat von CanonFreak Beitrag anzeigen
    Ob man wohl die Erschaffer der Mappack-Karten mal zu einer öffentlichen Version ihrer Werke mit Kooperationsmodus überreden kann?
    Die Leute sind schon lange nicht mehr bei bb !
    ist doch wie mittlerweile überall, neuer Auftrag - neue Leute, oder so ähnlich
    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

  7. #7
    Administrator Avatar von SpiderFive
    Registriert seit
    17.10.2002
    Beiträge
    24,613
    Downloads
    1
    Uploads
    0

    Standard 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

  8. #8
    12 of 5 Avatar von CanonFreak
    Registriert seit
    18.08.2012
    Beiträge
    6
    Downloads
    0
    Uploads
    0

    Standard 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

  1. [Blizzard] Szenario-Koop-Kampagne das
    Von SpiderFive im Forum Allgemein
    Antworten: 3
    Letzter Beitrag: 14.08.2010, 21:32
  2. [C&C] 4players: C&C Alarmstufe Rot 3: Witziger Koop-Trailer
    Von SpiderFive im Forum Allgemein
    Antworten: 0
    Letzter Beitrag: 20.11.2008, 16:30

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •