Probleme mit CreateArmy

» Siedler Map Source Forum » Mapping » Probleme mit CreateArmy

Seiten: 1

unstoppened
#1
26.05.2008 18:25
Beiträge: 112

Probleme mit CreateArmy

Das alte Leid...man will Truppen erstellen,die nich gleich wegrennen und dann kommt iein kleiner Fehler rein un man sieht ihn nich. ich bitte um hilfe bei dem folgenden:


function HeldenDa()
    if IsNear("dario","BotenPos2",500)then
	   CreateArmyOne()
	   return true
	end
end

function CreateArmyOne()
    armyOne = {
        player      = 3,
        id          = 1,
        strength    = 1,
        position    = GetPosition("Untoter1" ),
        rodeLength  = 1000
    }
    SetupArmy(armyOne)
 
    local troopDescription = {
        maxNumberOfSoldiers = 0,
        minNumberOfSoldiers = 0,
        experiencePoints    = LOW_EXPERIENCE,
        leaderType          = Entities.CU_Evil_LeaderSkirmisher1
    }
 
        EnlargeArmy(armyOne, troopDescription)
 
    StartSimpleJob("ControlArmyOne" )
end
 
function ControlArmyOne()
    if Counter.Tick2("ControlArmyOne", 10) then
        if IsDead(armyOne) then
            return true
        end
 
        Defend(armyOne)
    end
end



wobei ich sagen muss,dass alles aufgerufen wird,sonst könnte er mir nich sagen dass das "armyOne" in IsDead ein fehler is...bitte um hilfe.schonmal danke für die hilfe

gruß unstoppened

____________________
You become what you hate or you hate what you become!

Dieser Beitrag wurde von nevermind am 26.05.2008 um 18:55 editiert.

nevermind
Siedler Map Source Admin (Web)
#2
26.05.2008 19:01
Beiträge: 483

Was ist die Fehlermeldung?

____________________
LUA_ERRSYNTAX: [string "?"]:1: `=' expected near `<eof>'

unstoppened
#3
27.05.2008 13:52
Beiträge: 112

Der Fehler lautet:

[ 2008/05/27 13:50:12 ] ERROR: DEBUG ERROR!

Error: LUA_ERRRUN: [string "Data\Script\MapTools\Comfort.lua"]:255: attempt to index local `_army' (a nil value)
Additional info: Game turn 999 (1:39)

steht da so...ich kann daraus nur lesen,dass der name ffür army falsch sein muss,aber mehr seh ich nicht

____________________
You become what you hate or you hate what you become!

nevermind
Siedler Map Source Admin (Web)
#4
27.05.2008 19:00
Beiträge: 483

Mag sein, dass ich etwas blind auf den Augen bin, aber in deinem geposteten Code sehe ich keinen Fehler.
Der Fehler wird aber definitiv durch einen Aufruf von SetupArmy() verursacht, bei dem der Parameter nil ist. Eventuell an anderer Stelle?

____________________
LUA_ERRSYNTAX: [string "?"]:1: `=' expected near `<eof>'

unstoppened
#5
27.05.2008 21:06
Beiträge: 112

mh,also ich muss zugeben das ich das ganze 3x gemacht hab ich stell das jetz einfach mal so rein und gebe Z.255 an ich hoffe das hilft...

function HeldenDa()
    if IsNear("dario","BotenPos2",500)then
	   CreateArmyOne()
	   CreateArmyTwo()
	   CreateArmyThree()
	   UntotenFlehen()
	   return true
	end
end

function CreateArmyOne()
    armyOne = {
        player      = 3,
        id          = 1,
        strength    = 1,
        position    = GetPosition("Untoter1" ),
        rodeLength  = 1000
    }
    SetupArmy(armyOne)
 
    local troopDescription = {
        maxNumberOfSoldiers = 0,
        minNumberOfSoldiers = 0,
        experiencePoints    = LOW_EXPERIENCE,
        leaderType          = Entities.CU_Evil_LeaderSkirmisher1
    }
 
        EnlargeArmy(armyOne, troopDescription)
 
    StartSimpleJob("ControlArmyOne" )
end
 
function ControlArmyOne()
    if Counter.Tick2("ControlArmyOne", 10) then
        if IsDead(armyOne) then
            return true
        end
 
        Defend(armyOne)
    end
end

function CreateArmyTwo()
    armyOne = {
        player      = 3,
        id          = 2,
        strength    = 1,
        position    = GetPosition("Untoter2" ),
        rodeLength  = 1000
    }
    SetupArmy(armyTwo)
 
    local troopDescription = {
        maxNumberOfSoldiers = 0,
        minNumberOfSoldiers = 0,
        experiencePoints    = LOW_EXPERIENCE,
        leaderType          = Entities.CU_Evil_LeaderBearman1
    }
 
        EnlargeArmy(armyTwo, troopDescription)
 
    StartSimpleJob("ControlArmyTwo" )
end
 
function ControlArmytwo()
    if Counter.Tick2("ControlArmyTwo", 10) then
        if IsDead(armyTwo) then
            return true
        end
 
        Defend(armyTwo)
    end
end

function CreateArmyThree()
    armyOne = {
        player      = 3,
        id          = 3,
        strength    = 1,
        position    = GetPosition("Untoter3" ),
        rodeLength  = 1000
    }
    SetupArmy(armyThree)
 
    local troopDescription = {
        maxNumberOfSoldiers = 0,
        minNumberOfSoldiers = 0,
        experiencePoints    = LOW_EXPERIENCE,
        leaderType          = Entities.CU_Evil_LeaderSkirmisher1
    }
 
        EnlargeArmy(armyThree, troopDescription)
 
    StartSimpleJob("ControlArmyThree" )
end
 
function ControlThree()
    if Counter.Tick2("ControlThree", 10) then
        if IsDead(armyThree) then
            return true       [b] <--Das ist Zeile 255 [/b]
        end
 
        Defend(armyThree)
    end
end



____________________
You become what you hate or you hate what you become!

Dieser Beitrag wurde von nevermind am 27.05.2008 um 22:11 editiert.

Peermanent
#6
27.05.2008 21:14
Beiträge: 168

Du machst den Fehler
function CreateArmyTwo()
armyOne = {.... -- Hier sollte armyTwo stehen

function ControlArmytwo()
if Counter.Tick2("ControlArmyTwo", 10) then
if IsDead(armyTwo) then
return true
end



genauso bei CreateArmyThree

unstoppened
#7
28.05.2008 13:32
Beiträge: 112

ich werde es ausprobieren...ich danke dir

gruß unstoppened

____________________
You become what you hate or you hate what you become!

trabbi
DAS Auto...
#8
30.05.2008 00:48
Beiträge: 183

Ich sehe den Fehler hier:

maxNumberOfSoldiers = 0,
minNumberOfSoldiers = 0,

Dadurch werden ja nur 0 Soldaten erzeugt.
------------------------------------

function Createarmee1()
    armee1 = {
        player      = 4,        
        id          = 1,
        strength    = 8,
        position    = GetPosition("dovbararmee1"),
        rodeLength  = 6000
    }
    SetupArmy(armee1)
    local troopDescription = {
        maxNumberOfSoldiers = 6,
        minNumberOfSoldiers = 0,
        experiencePoints    = MEDIUM_EXPERIENCE,
        leaderType          = Entities.PU_LeaderSword1  
    }
    for i = 1, 5 do
        EnlargeArmy(armee1, troopDescription)
    end
    StartSimpleJob("Controlarmee1")
end
function Controlarmee1()
    if Counter.Tick2("Controlarmee1", 10) then
        if IsDead(armee1) then
		    FrontalAttack(armee1)
            return true
        end
        Defend(armee1)
    end
end



Das stammt nun aus einer älteren Map

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

Dieser Beitrag wurde von trabbi am 30.05.2008 um 00:58 editiert.

trabbi
DAS Auto...
#9
31.05.2008 00:38
Beiträge: 183

function HeldenDa()
    if IsNear("dario","BotenPos2",500)then
	   CreateArmyOne()
	   CreateArmyTwo()
	   CreateArmyThree()
	   UntotenFlehen()
	   return true
	end
end

function CreateArmyOne()
    armyOne = {
        player      = 3,
        id          = 1,
        strength    = 1,
        position    = GetPosition("Untoter1" ),
        rodeLength  = 1000
    }
    SetupArmy(armyOne)
 
    local troopDescription = {
        maxNumberOfSoldiers = 6,
        minNumberOfSoldiers = 2,
        experiencePoints    = LOW_EXPERIENCE,
        leaderType          = Entities.CU_Evil_LeaderSkirmisher1
    }
 
        EnlargeArmy(armyOne, troopDescription)
 
    StartSimpleJob("ControlarmyOne" )
end
 
function ControlArmyOne()
    if Counter.Tick2("ControlarmyOne", 10) then
        if IsDead(armyOne) then
            return true
        end
 
        Defend(armyOne)
    end
end

function CreateArmyTwo()
    armyTwo = {
        player      = 3,
        id          = 2,
        strength    = 1,
        position    = GetPosition("Untoter2" ),
        rodeLength  = 1000
    }
    SetupArmy(armyTwo)
 
    local troopDescription = {
        maxNumberOfSoldiers = 8,
        minNumberOfSoldiers = 4,
        experiencePoints    = LOW_EXPERIENCE,
        leaderType          = Entities.CU_Evil_LeaderBearman1
    }
 
        EnlargeArmy(armyTwo, troopDescription)
 
    StartSimpleJob("ControlarmyTwo" )
end
 
function ControlarmyTwo()
    if Counter.Tick2("ControlarmyTwo", 10) then
        if IsDead(armyTwo) then
            return true
        end
 
        Defend(armyTwo)
    end
end

function CreateArmyThree()
    armyThree = {
        player      = 3,
        id          = 3,
        strength    = 1,
        position    = GetPosition("Untoter3" ),
        rodeLength  = 1000
    }
    SetupArmy(armyThree)
 
    local troopDescription = {
        maxNumberOfSoldiers = 5,
        minNumberOfSoldiers = 1,
        experiencePoints    = LOW_EXPERIENCE,
        leaderType          = Entities.CU_Evil_LeaderSkirmisher1
    }
 
        EnlargeArmy(armyThree, troopDescription)
 
    StartSimpleJob("ControlarmyThree" )
end
 
function ControlarmyThree()
    if Counter.Tick2("ControlarmyThree", 10) then
        if IsDead(armyThree) then
            return true        
        end
 
        Defend(armyThree)
    end
end



____________________
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

unstoppened
#10
31.05.2008 08:04
Beiträge: 112

aufjeden fall funktionierts auch mit 0...ich will jau auch keine soldaten sondern nur anführer

gruß un

____________________
You become what you hate or you hate what you become!

Seiten: 1

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

Impressum