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