Alternative zu isDead

» Siedler Map Source Forum » Siedler DEdK Script Forum » Alternative zu isDead

Seiten: 1

Narnius
#1
30.11.2018 16:00
Beiträge: 34

Alternative zu isDead

Hallo liebe Mitsiedlerinnen und Mitsiedler,

ich skripte immer noch an meiner einfach gestrickten Dreispieler-Coop-Map mit den Schwarzen Bergen als Vorlage. Es fehlt nicht mehr viel damit diese spielbar ist, allerdings gibt es noch ein Problem: IsDead funktioniert bei der Abfrage, ob Balistatürme noch stehen zwar wunderbar, bei armyFive allerdings nicht. Der rückgabewert ist dann immer verfälscht. Ich habe auch bereits den isDead-Wrapper ins Skript kopiert... immer noch Fehlanzeige.
Wahrscheinlich mache ich irgendetwas falsch, wenn ja, würde ich mich freuen, wenn ihr mich darauf hinweisen könntet. Ansonsten freue ich mich auch über Alternative Lösungen ohne isDead.
Hier das Skript:

if XNetwork then
    XNetwork.GameInformation_GetLogicPlayerTeam = function() return 1; end
    XNetwork.GameInformation_GetFreeAlliancesFlag = function() return 1; end
end
 
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( 1 ) -- 1 Held pro Spieler
    StartSimpleJob("VictoryJob")
    NewTribute1();
    ModelOverwrite();
    CreateArmyOne();
    Turmkaputt();
    ActivateShareExploration( 1 , 6 , false);
    --ActivateShareExploration( 2 , 6 , true);
    --ActivateShareExploration( 3 , 6 , true);
    --CreateArmyThree();
    --CreateArmyFour();
    Game.GameTimeSetFactor(4);
    CreateArmyFive();


 
    if XNetwork.Manager_DoesExist() == 0 then      
        for i = 1, 3 do    -- Für 3 Spieler eingestellt
            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
    SetHostile( 5, 2 )
    SetHostile( 5, 3 )
    SetHostile( 5, 6 )
    SetFriendly( 6, 1 )
    SetFriendly( 6, 2 )
    SetFriendly( 6, 3 )
    
    
    
    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(5)
    MapEditor_CreateHQDefeatCondition()
 
    -- Hier gehts mit den Parametern für den KI Spieler los. In diesem Fall Spieler 3, 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 = 5;
    local strength = 3;
    local range = 3000;
    local techlevel = 3;    
    local position = "P5_AI_HQ"; -- natürlich sollte man P5_AI_HQ als Skriptnamen dem Hauptquartier geben, natürlich bei player 4 P4_AI_HQ etc..
    local aggressiveness = 3;   
    local peacetime = 0;  
    MapEditor_SetupAI( aiID, strength, range, techlevel, position, aggressiveness, peacetime );
    SetupPlayerAi( aiID, { extracting = 1, repairing = 1 } );
    SetPlayerName( aiID, "Nebelvolk" );
 
    --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( 5, {
    resources =
    { 
        gold                =   10000,
        clay                =   100,
        iron                =   1500,
        sulfur        = 1500,
        stone            =  100,
        wood                =   100,
    }
    } );
    SetupPlayerAi( 5, {
    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     = 300
    local InitClayRaw     = 700
    local InitWoodRaw     = 400
    local InitStoneRaw   = 300
    local InitIronRaw     = 300
    local InitSulfurRaw  = 250
 
    
    --Add Players Resources
    for i = 1, 3 do
        Tools.GiveResouces(i, InitGoldRaw , InitClayRaw,InitWoodRaw, InitStoneRaw,InitIronRaw,InitSulfurRaw)

        --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)
        ForbidTechnology(Technologies.UP2_Tower, i)
        
    end
end  
 
-- victory funktion muß bei coop sein 
-- Hier wird die Siegbedingung vorgegeben
function VictoryJob()
    if IsDead("P5_AI_HQ") then
        Victory();
        return true;
    end
end  

function CreateArmyOne()  
  armyOne            = {}
  
  armyOne.player     = 5
  armyOne.id         = 6
  armyOne.strength   = 3
  armyOne.position   = GetPosition("NVolk")
  armyOne.rodeLength = 500  
 
  SetupArmy(armyOne)  

  troopDescription  = {  
  maxNumberOfSoldiers     = 16,
  minNumberOfSoldiers     = 0,
  experiencePoints        = VERYLOW_EXPERIENCE,
 }

 troopDescription.leaderType = Entities.CU_Evil_LeaderBearman1  

 EnlargeArmy(armyOne,troopDescription)
 EnlargeArmy(armyOne,troopDescription)  
 
 StartCountdown(240, ControlArmyOne, true)

end


function CreateArmyTwo()  
  armeeZweite            = {}
  
  armeeZweite.player     = 5
  armeeZweite.id         = 7
  armeeZweite.strength   = 3
  armeeZweite.position   = GetPosition("NVolk")
  armeeZweite.rodeLength = 500  
 
  SetupArmy(armeeZweite)  

  troopDescription  = {  
  maxNumberOfSoldiers     = 16,
  minNumberOfSoldiers     = 0,
  experiencePoints        = VERYLOW_EXPERIENCE,
 }

 troopDescription.leaderType = Entities.CU_Evil_LeaderSkirmisher1  

 EnlargeArmy(armeeZweite,troopDescription)
 EnlargeArmy(armeeZweite,troopDescription)  
 
 StartCountdown(240, ControlArmyTwo, true)

end

function ControlArmyOne()
    --if not armyOne.created then
        --armyOne.created = not IsDead(armyOne)
        --return false
    --end
    StartCountdown(1, CreateArmyTwo, false)
    StartCountdown(1, AngriffEins, false)
end

function ControlArmyTwo()
 StartCountdown(1, CreateArmyOne, false)
 StartCountdown(1, AngriffZwei, false)
end

function AngriffEins()

if IsDead(armyFive) then

   Redeploy(armyOne, GetPosition("StartPos" ), 200);
   Sound.PlayGUISound(Sounds.fanfare,95)

 else

   Sound.PlayGUISound( Sounds.VoicesHero7_HERO7_NO_rnd_07,100)
   Redeploy(armyOne, GetPosition("Defenders" ), 2000);

 end

end

function AngriffZwei()

 if IsDead("Def-Tower1") and IsDead("Def-Tower2") and IsDead("Def-Tower3") then

  Redeploy(armeeZweite, GetPosition("P3StartPos" ), 2300);
  Sound.PlayGUISound(Sounds.fanfare,95)

 else

  Sound.PlayGUISound( Sounds.VoicesHero7_HERO7_NO_rnd_07,100)
  Redeploy(armeeZweite, GetPosition("Towers" ), 600);

 end

end

function StartCountdown(_Limit, _Callback, _Show)
    assert(type(_Limit) == "number")
    assert( not _Callback or type(_Callback) == "function" )
 
    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
            i=1
        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 CreateArmyFive()  
  armyFive            = {}
  
  armyFive.player     = 6
  armyFive.id         = 8
  armyFive.strength   = 3
  armyFive.position   = GetPosition("Defenders")
  armyFive.rodeLength = 500  
 
  SetupArmy(armyFive)  

  troopDescription  = {  
  maxNumberOfSoldiers     = 8,
  minNumberOfSoldiers     = 0,
  experiencePoints        = VERYHIGH_EXPERIENCE,
 }

 troopDescription.leaderType = Entities.PU_LeaderSword4  

 EnlargeArmy(armyFive,troopDescription)
 EnlargeArmy(armyFive,troopDescription)
 EnlargeArmy(armyFive,troopDescription)
 EnlargeArmy(armyFive,troopDescription)

end

function ModelOverwrite()
   Logic.SetModelAndAnimSet(GetEntityId("steinmauer"), Models.XD_RuinWall1)
   Logic.SetModelAndAnimSet(GetEntityId("wall1"), Models.XD_Palisade1)
   Logic.SetModelAndAnimSet(GetEntityId("wall2"), Models.XD_Palisade1)
   Logic.SetModelAndAnimSet(GetEntityId("wall3"), Models.XD_Palisade1)
   Logic.SetModelAndAnimSet(GetEntityId("wall4"), Models.XD_Palisade1)
   Logic.SetModelAndAnimSet(GetEntityId("wall5"), Models.XD_Palisade1)
-- wall1-wall5 sind sprengbare Steine, die steinmauer ist eigentlich ein abbaubarer Steinhaufen.
end


--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

--COMFORT-Funktionen und Tribute reaktivieren.

------------------------------------------------------------------------------------------------------------------------------------------------------------
-- "IsDead" mit Army-Optimierung		Version 1.00
------------------------------------------------------------------------------------------------------------------------------------------------------------
function IsDeadWrapper(_input)
	if type(_input) == "table" and not _input.created then
		_input.created = not IsDeadOrig(_input);
	    return false;
	end
	return IsDeadOrig(_input);
end
IsDeadOrig = IsDead;
IsDead = IsDeadWrapper;


function AreEnemiesInArea( _player, _position, _range)
    return AreEntitiesOfDiplomacyStateInArea( _player, _position, _range, Diplomacy.Hostile )
end
function AreAlliesInArea( _player, _position, _range)
    return AreEntitiesOfDiplomacyStateInArea( _player, _position, _range, Diplomacy.Friendly )
end
function AreEntitiesOfDiplomacyStateInArea( _player, _position, _range, _state )
    for i = 1,8 do
        if Logic.GetDiplomacyState( _player, i) == _state then
            if AreEntitiesInArea( i, 0, _position, _range, 1) then
                return true
            end
        end
    end
    return false
end 

function ActivateShareExploration(_player1, _player2, _both)
	assert(type(_player1) == "number" and type(_player2) == "number" and _player1 <= 8 and _player2 <= 8 and _player1 >= 1 and _player2 >= 1);
	if _both == false then
		Logic.SetShareExplorationWithPlayerFlag(_player1, _player2, 1);
	else
		Logic.SetShareExplorationWithPlayerFlag(_player1, _player2, 1);
		Logic.SetShareExplorationWithPlayerFlag(_player2, _player1, 1);
	end
end


function GameCallback_FulfillTribute() --Im Multiplayer sind Tribute standardmäßig deaktiviert, daher muss man sie erst wieder aktivieren
    return 1
end

Dieser Beitrag wurde von Narnius am 30.11.2018 um 16:11 editiert.

Narnius
#2
30.11.2018 16:13
Beiträge: 34

Hinweis

Ich musste ein/zwei Sachen rausnehmen, sonst hätte der Beitrag nicht mehr voll angezeigt werden können.

Der_Deutsche
#3
30.11.2018 18:44
Beiträge: 349
Narnius
#4
30.11.2018 19:09
Beiträge: 34

In der Tat

Zitat von Der_Deutsche:
Hast du das ganze mal mit IsAlive versucht?



Ja, habe ich.

Der_Deutsche
#5
30.11.2018 19:55
Beiträge: 349
mcb
#6
30.11.2018 20:49
Beiträge: 1472

Initialisiere mal die KI, bevor du die erste Armee erstellst. (Also den Aufruf für die erste Arme ganz unten in die GameCallback_OnGameStart)

Narnius
#7
30.11.2018 21:02
Beiträge: 34

Ok

Zitat von mcb:
Initialisiere mal die KI, bevor du die erste Armee erstellst. (Also den Aufruf für die erste Arme ganz unten in die GameCallback_OnGameStart)



Das habe ich gemacht, als ich dann meinen Blick auf das Gegnerische Lager richtete, sah ich einen stetig expandierenden Teppich aus Dämonen...

mcb
#8
01.12.2018 02:04
Beiträge: 1472

Dann pack mal überall wo du Truppen Spawnst ne Message rein, damit du weißt wo du nach dem Fehler auchen musst.

Narnius
#9
01.12.2018 14:23
Beiträge: 34

Zitat von mcb:
Dann pack mal überall wo du Truppen Spawnst ne Message rein, damit du weißt wo du nach dem Fehler auchen musst.



Habe ich doch schon. Der Fehler liegt eindeutig bei der isDead-Abfrage. Ich brauche nur eine geeignetete Alternative. Mit IsEntityInArea komme ich net so gut zurecht, als ich das Ausprobiert habe, hat es noch schlechter funktioniert als isDead. Bei isDead, isAlive, und deren Umkehrungen durch not, wurde immer ein Rückgabewert ausgegeben, welcher damit übereinstimmt, das die armyFive Tot ist.

mcb
#10
01.12.2018 15:16
Beiträge: 1472

armyFive.player     = 6


Erstellst du auch irgendwo die KI für Spieler 6?
Wenn keine KI erstellt wurde, sind Armeen von diesem Spieler auch immer tot.

Narnius
#11
01.12.2018 15:25
Beiträge: 34

Tatsache!

Zitat von mcb:

armyFive.player     = 6


Erstellst du auch irgendwo die KI für Spieler 6?
Wenn keine KI erstellt wurde, sind Armeen von diesem Spieler auch immer tot.



Daran müsste es liegen, vielen Dank!
Dann probiere ich das gleich einmal!

mcb
#12
01.12.2018 16:33
Beiträge: 1472

Noch nen Tipp: Wenn du die ganzen Funktionen sortierst, also alle Comforts ans Ende, die CreateArmies zusammen und dahinter die ControlJobs, macht es das ganze deutlich einfacher zu lesen und auf Fehler zu prüfen.

Narnius
#13
01.12.2018 16:41
Beiträge: 34

Ja

Stimmt schon.
Ich habe jetzt gerade das Problem, dass die Ki, wenn ich sie Erstelle, dem Spieler IMMER feindlich gesinnt ist. Kann man dagegen was machen? Selbst im Diplomatiemenü, obwohl, ich sie an anderer Stelle zu Verbündeten gemacht habe.

Narnius
#14
01.12.2018 16:56
Beiträge: 34

HURRA!

So wie es aussieht, habe ich jetzt endlich die Lösung. Ich starte einen unsichtbaren Countdown am Anfang des Spiels, welcher dann Gegen Ende Player 6 freundlich stellt.

mcb
#15
01.12.2018 17:16
Beiträge: 1472

Das liegt wahrscheinlich daran, das MapEditor_SetupAI den Spieler zu Spieler 1 feindlich stellt. Wenn du danach nochmal SetFriendly aufrufst, funktioniert es.
(Wie du mit dem Countdown ja schon rausgefunden hast, es reicht allerdings, die Diplomatieeinstellungen hinter die KI Initialisierungen zu schieben)

Narnius
#16
01.12.2018 18:16
Beiträge: 34

Genau

Zitat von mcb:
Das liegt wahrscheinlich daran, das MapEditor_SetupAI den Spieler zu Spieler 1 feindlich stellt. Wenn du danach nochmal SetFriendly aufrufst, funktioniert es.
(Wie du mit dem Countdown ja schon rausgefunden hast, es reicht allerdings, die Diplomatieeinstellungen hinter die KI Initialisierungen zu schieben)



Als ich das aber schon während dem GameCallback_OnGameStart()
aufrief, hat das ganze Spiel versagt. Der Grafikkontrast war plötzlich Grundlos Düster, und viele Funktionen wurden ausgelassen. Ein Hurra auf den Countdown also!

mcb
#17
01.12.2018 19:09
Beiträge: 1472

Klingt nach nem Syntaxfehler, hast du due Fehlermeldungen nicht an?

Narnius
#18
04.12.2018 09:21
Beiträge: 34

Also

Vom Editor wurde mir, soweit ich weiß, kein Syntaxfehler angezeigt. Ich kenne mich zwar nicht besonders gut aus, meine Vermutung wäre, das wenn das Setup der KI diese auf Hostile setzt, dann in der selben Funktion (nämlich GameCallbackOnStart oder wie das genau hieß ) dieselbe KI auf Friendly gestellt wird, dass das Spiel dann einfach aufgibt.

mcb
#19
04.12.2018 15:18
Beiträge: 1472

Die Diplo 2 mal zu ändern erzeugt mit Sicherheit keinen Fehler.
Mit Fehlermeldungen meine ich das hier: http://www.siedler-games.de/si...als:fehlermeldungen_aktivieren, nicht die im Mapeditor (die ist des öfteren falsch).

Narnius
#20
04.12.2018 15:26
Beiträge: 34

Hm

Jagut, da es jetzt ja funktioniert, habe ich keine große Lust, das noch einmal abzuändern.

Seiten: 1

SiteEngine v1.5.0 by nevermind, ©2005-2007
Design by SpiderFive (www.siedler-games.de) - English translation by juja

Impressum