Hilfe beim Mapping gesucht!

» Siedler Map Source Forum » Mapping » Hilfe beim Mapping gesucht!

Seiten: 1

patrick95
#1
27.05.2009 18:31
Beiträge: 400

Hilfe bei Fehlersuche benötigT!

An alle: Wenn ich diesen Code mit CreateNpcKalawetten() aufrufe, kann ich unendlich mal wählen und bekomme sooft ich will einen Trostpreis, auserdem kann ich nicht gewinnen. Warum nicht? Ich bin für Hilfe dankbar!

function CreateNpcKalawetten()  
 local npc = { 
    name   = "kala",
    callback = BriefingKalawetten, 
 } 
 CreateNPC(npc)
end 

function BriefingKalawetten()
local briefing = {}
local AP = function( _page ) table.insert( briefing, _page ); return _page; end
local choicePage = AP{    
mc   = {     
title   = "Wettveranstalterin Kala",
text    = "Ihr seht rechts von mir vier Truhen! In einer von den vieren ist die Perle der Dunkelheit drin, in den anderen nichts! Wollt Ihr auf eine setzen?",
firstText   = "Klar doch!",
secondText  = "Nee! Keine Maeuse mehr!",
firstSelected  = 2,   
secondSelected = 4,   
},
dialogCamera    =   true,
}
AP{ 
text = "Ob Ihr wohl genug Geld habt?",
}
AP()    
AP{ 
text = "Dann hast du Pech gehabt! Komm wan anders wieder!",
}
briefing.finished =
function()
if GetSelectedBriefingMCButton( choicePage ) == 1 then
PrufobGeldda()
else
CreateNpcKalawetten()
end
end

StartBriefing(briefing);
end

function PrufobGeldda()
if GetGold(1) > 999 then
richtigW = math.random(1,4)
Message("Drueckt nun eine der Tasten 1-4 um auf eine Truhe zu setzen!")
AddGold(-1000)
Wahl()
else
Message("Nicht genug Geld!")
CreateNpcKalawetten()
end
end

function Wahl()
function GroupSelection_SelectTroops ( _count )
if _count == 1 then
RichtigoderFalsch()
elseif _count == 2 then
RichtigoderFalsch()
elseif _count == 3 then
RichtigoderFalsch()
elseif _count == 4 then
RichtigoderFalsch()
end
end
end

function RichtigoderFalsch()
if _count == richtigW then
siegMenge = math.random(2000,3000)
AddGold(siegMenge)
Message("Gewonnen! Ihr habt "..siegMenge.." Goldtaler bekommen!")
CreateNpcKalawetten()
else
trostPreis = math.random(1,4)
trostMenge = math.random(300,500)
WelcherTrost()
CreateNpcKalawetten()
end
end

function WelcherTrost()
if trostPreis == 1 then
Message("Verloren! Ihr habt als Trostpreis "..trostMenge.." Lehm erhalten!")
AddClay(trostMenge)
elseif trostPreis == 2 then
Message("Verloren! Ihr habt als Trostpreis "..trostMenge.." Holz erhalten!")
AddWood(trostMenge)
elseif trostPreis == 3 then
Message("Verloren! Ihr habt als Trostpreis "..trostMenge.." Stein erhalten!")
AddStone(trostMenge)
elseif trostPreis == 4 then
Message("Verloren! Ihr habt als Trostpreis "..trostMenge.." Eisen erhalten!")
AddIron(trostMenge)
end
end



patrick95

____________________
Alles ist möglich, hat man dafür nur genug Zeit

patrick95
#2
27.05.2009 18:31
Beiträge: 400

Achja: Die benötigten Comfortfunktionen sind vorhanden.

patrick95

____________________
Alles ist möglich, hat man dafür nur genug Zeit

patrick95
#3
27.05.2009 18:50
Beiträge: 400

Der nicht gewinnkönnen Fehler ist behoben, aber es geht immer noch unendlich mal!

function CreateNpcKalawetten()  
 local npc = { 
    name   = "kala",
    callback = BriefingKalawetten, 
 } 
 CreateNPC(npc)
end 

function BriefingKalawetten()
local briefing = {}
local AP = function( _page ) table.insert( briefing, _page ); return _page; end
local choicePage = AP{    
mc   = {     
title   = "Wettveranstalterin Kala",
text    = "Ihr seht rechts von mir vier Truhen! In einer von den vieren ist die Perle der Dunkelheit drin, in den anderen nichts! Wollt Ihr auf eine setzen?",
firstText   = "Klar doch!",
secondText  = "Nee! Keine Maeuse mehr!",
firstSelected  = 2,   
secondSelected = 4,   
},
dialogCamera    =   true,
}
AP{ 
text = "Ob Ihr wohl genug Geld habt?",
}
AP()    
AP{ 
text = "Dann hast du Pech gehabt! Komm wan anders wieder!",
}
briefing.finished =
function()
if GetSelectedBriefingMCButton( choicePage ) == 1 then
PrufobGeldda()
else
CreateNpcKalawetten()
end
end

StartBriefing(briefing);
end

function PrufobGeldda()
if GetGold(1) > 999 then
richtigW = math.random(1,4)
Message("Drueckt nun eine der Tasten 1-4 um auf eine Truhe zu setzen!")
AddGold(-1000)
Wahl()
else
Message("Nicht genug Geld!")
CreateNpcKalawetten()
end
end

function Wahl()
function GroupSelection_SelectTroops ( _count )
if _count == 1 then
RichtigoderFalsch()
gew = 1
elseif _count == 2 then
RichtigoderFalsch()
gew = 2
elseif _count == 3 then
RichtigoderFalsch()
gew = 3
elseif _count == 4 then
RichtigoderFalsch()
gew = 4
end
end
end

function RichtigoderFalsch()
if gew == richtigW then
siegMenge = math.random(2000,3000)
AddGold(siegMenge)
Message("Gewonnen! Ihr habt "..siegMenge.." Goldtaler bekommen!")
CreateNpcKalawetten()
else
trostPreis = math.random(1,4)
trostMenge = math.random(300,500)
WelcherTrost()
CreateNpcKalawetten()
end
end

function WelcherTrost()
if trostPreis == 1 then
Message("Verloren! Ihr habt als Trostpreis "..trostMenge.." Lehm erhalten!")
AddClay(trostMenge)
elseif trostPreis == 2 then
Message("Verloren! Ihr habt als Trostpreis "..trostMenge.." Holz erhalten!")
AddWood(trostMenge)
elseif trostPreis == 3 then
Message("Verloren! Ihr habt als Trostpreis "..trostMenge.." Stein erhalten!")
AddStone(trostMenge)
elseif trostPreis == 4 then
Message("Verloren! Ihr habt als Trostpreis "..trostMenge.." Eisen erhalten!")
AddIron(trostMenge)
end
end



patrick95

____________________
Alles ist möglich, hat man dafür nur genug Zeit

fritz_98
#4
27.05.2009 20:09
Beiträge: 472

Über das GroupSelection_SelectTroops (_count) muss ein

GroupSelection_SelectTroopsOld = GroupSelection_SelectTroops


um die ursprüngliche Funktion zu sichern.
Dann unter

elseif _count == 4 then
RichtigoderFalsch()
gew = 4
end


das

GroupSelection_SelectTroops = GroupSelection_SelectTroopsOld


, um die ursprüngliche Funktion wieder zu aktivieren. Somit wird die ewige Auswahlmöglichkeit unterbunden

Mfg
Fritz

patrick95
#5
27.05.2009 20:34
Beiträge: 400

Danke, aber Oh Gott, woher weisst du das???

patrick95

____________________
Alles ist möglich, hat man dafür nur genug Zeit

patrick95
#6
27.05.2009 20:43
Beiträge: 400

Nachschub

Das macht das unendliche Drücken aber erst nach 7 Sekunden wirkungslos, voher kann ich noch jede Menge raushauen.

patrick95

____________________
Alles ist möglich, hat man dafür nur genug Zeit

patrick95
#7
27.05.2009 21:01
Beiträge: 400

Fehler gefunden:

elseif _count == 4 then
RichtigoderFalsch()
gew = 4
end



das muss nicht nur unter gew = 4, sondern auch unter 3,2 und 1.

Dann funktionierts. Da hast du nur halb recht gehabt, fritz.

patrick95

____________________
Alles ist möglich, hat man dafür nur genug Zeit

Seiten: 1

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

Impressum