Weiterspielen am Ende
» Siedler Map Source Forum » Siedler DEdK Script Forum » Weiterspielen am Ende
Seiten: 1
ArisSchwester
|
#1 26.03.2010 01:34 Beiträge: 48 |
Weiterspielen am Ende
Hallo an alle coolen ScrpiterfreaksInnen,
bin noch im Uebungsstatus und hab in meiner Uebungsmap begonnen, einige wichtige Sachen ausprobieren. Wichtig war mir unter anderem das weitersiedeln am Ende (ich selber habe beim Spielen nämlich auch keine Lust, rausgeschmissen zu werden, zu weil ich gewonnen habe).
Habe den Code, der hier veroeffentlicht wurde, reingegeben, hatte am Anfang den Viktory-Job noch drin. Dann passierte nichts mehr, als ein normales Viktory mit rausschmeissen.
Danach hab ich das Viktory rausgestrichen und dann passierte garnichts, d.h. ich konnte zwar weitersiedeln, aber das Aufdecken der Karte etc. plus Briefing gabs trotzdem nicht. Natürlich auch kein Viktory.
Ich poste mal das Ganze, wie es jetzt aussieht (ohne Viktory). Was mache ich falsch? Lua ist ok.
--------------------------------------------------------------------------------
-- MapName: XXX
--
-- Author: XXX
--
--------------------------------------------------------------------------------
-- Include main function
Script.Load( Folders.MapTools.."Main.lua" )
IncludeGlobals("MapEditorTools"
--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- This function is called from main script to initialize the diplomacy states
function InitDiplomacy()
SetHostile(1,2)
SetPlayerName(2, "Kerberos"
end
--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- This function is called from main script to init all resources for player(s)
function InitResources()
AddGold (1000000)
AddSulfur(1000000)
AddIron (1000000)
AddWood (1000000)
AddStone (1000000)
AddClay (1000000)
AddGold(2,1000) -- for player 2...
end
--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- This function is called to setup Technology states on mission start
function InitTechnologies()
end
--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- This function is called on game start and after save game is loaded, setup your weather gfx
-- sets here
function InitWeatherGfxSets()
SetupNormalWeatherGfxSet()
end
--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- This function is called on game start you should setup your weather periods here
function InitWeather()
AddPeriodicSummer(10)
end
--++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- This function is called on game start and after save game to initialize player colors
function InitPlayerColorMapping()
end
-- die "Erste Map Aktion", die Map startet
------------------------------------------------------------------------------
function FirstMapAction()
CreatePlayer2()
CreateArmyOne()
CreatePreludeBriefing()
CreateNpcs()
end
---------------------------------------------------------------------------------------------
-- hier jetzt eine lokale Funktion um den Computerspieler zu kreiieren
-- !!! Es muß mindestens ein Hauptgebäude des feindlichens Spielers auf der Map sein!!!
------------------------------------------------------------------------------
function CreatePlayer2()
player2 = {}
player2.id = 2
local description = {}
description.serfLimit = 10
SetupPlayerAi(player2.id,description)
end
---------------------------------------------------------------------------------------------
-- creates an army, controlled by the AI
------------------------------------------------------------------------------
function CreateArmyOne()
armyOne = {}
armyOne.player = 2
armyOne.id = 1
armyOne.strength = 8
armyOne.position = GetPosition("armyOne"
armyOne.rodeLength = 4000
SetupArmy(armyOne)
local troopDescription = {}
troopDescription.maxNumberOfSoldiers = 4
troopDescription.minNumberOfSoldiers = 0
troopDescription.experiencePoints = LOW_EXPERIENCE
troopDescription.leaderType = Entities.PU_LeaderHeavyCavalry1
for i = 1,8,1 do
EnlargeArmy(armyOne,troopDescription)
end
StartSimpleJob("ControlArmyOne"
end
---------------------------------------------------------------------------------------------
-- Schaffe eine zweite Armee
------------------------------------------------------------------------------
function CreateArmyTwo()
armyTwo = {}
armyTwo.player = 2
armyTwo.id = 2
armyTwo.strength = 8
armyTwo.position = GetPosition("armyOne"
armyTwo.rodeLength = 4000
SetupArmy(armyTwo)
local troopDescription = {
maxNumberOfSoldiers = 4,
minNumberOfSoldiers = 0,
experiencePoints = LOW_EXPERIENCE,
leaderType = Entities.PU_LeaderHeavyCavalry1
}
EnlargeArmy(armyTwo,troopDescription)
EnlargeArmy(armyTwo,troopDescription)
EnlargeArmy(armyTwo,troopDescription)
EnlargeArmy(armyTwo,troopDescription)
EnlargeArmy(armyTwo,troopDescription)
EnlargeArmy(armyTwo,troopDescription)
EnlargeArmy(armyTwo,troopDescription)
EnlargeArmy(armyTwo,troopDescription)
StartSimpleJob("ControlArmyTwo"
end
---------------------------------------------------------------------------------------------
-- Funktion "VictoryJob"
------------------------------------------------------------------------------
function VictoryJob()
if IsDead("player2" then
ResolveBriefing(PreludeBriefingDestroyHQ)
StartSimpleJob ("AuswahlEndeJaNein()"
return true
end
end
---------------------------------------------------------------------------------------------
-- Job "ControlArmyOne"
------------------------------------------------------------------------------
function ControlArmyOne()
if IsDead(armyOne) then
CreateArmyTwo()
return true
else
Defend(armyOne)
end
end
---------------------------------------------------------------------------------------------
-- Job "ControlArmyTwo"
------------------------------------------------------------------------------
function ControlArmyTwo()
Advance(armyTwo)
end
---------------------------------------------------------------------------------------------
-- Briefing "Prelude"
------------------------------------------------------------------------------
function CreatePreludeBriefing()
PreludeBriefing = {}
PreludeBriefing.finished = PreludeBriefingFinished
page = 0
-- page 1
page = page + 1
PreludeBriefing[page] = {}
PreludeBriefing[page].title = "Hallo Testerin"
PreludeBriefing[page].text = "Ich versuche hier zu ueben. Mal sehen, ob es klappt"
PreludeBriefing[page].npc = {}
PreludeBriefing[page].npc.id = GetEntityId("Pilgrim"
PreludeBriefing[page].npc.isObserved= true
PreludeBriefing[page].dialogCamera = true
PreludeBriefingShowPilgrim = PreludeBriefing[page]
-- page 2
page = page + 1
PreludeBriefing[page] = {}
PreludeBriefing[page].title = "Ich bin Pilgrim, die meisten sind nicht nett zu mir"
PreludeBriefing[page].text = "Hier siehst Du die Armee, die zerstoert werden muß"
PreludeBriefing[page].position = GetPosition("armyOne"
PreludeBriefing[page].explore = BRIEFING_EXPLORATION_RANGE
PreludeBriefingShowArmy = PreludeBriefing[page]
-- page 3
page = page + 1
PreludeBriefing[page] = {}
PreludeBriefing[page].title = "Das Ziel ist . . ."
PreludeBriefing[page].text = "die Zerstoerung der Schwarzen Festung! Wie langweilig, gaehn."
PreludeBriefing[page].position = GetPosition("player2"
PreludeBriefing[page].explore = BRIEFING_EXPLORATION_RANGE
PreludeBriefing[page].marker = ANIMATED_MARKER
PreludeBriefing[page].quest = {}
PreludeBriefing[page].quest.id = 1
PreludeBriefing[page].quest.type = MAINQUEST_OPEN
PreludeBriefing[page].quest.title = "Zerstoere die Schwarze Festung"
PreludeBriefing[page].quest.text = "Was Besseres kommt spaeter, Pilgrim!"
PreludeBriefingDestroyHQ = PreludeBriefing[page]
-- page 4
page = page + 1
PreludeBriefing[page] = {}
PreludeBriefing[page].title = MISSION_OBJECTIVES
PreludeBriefing[page].text = "Zerstoere die Schwarze Festung und achte auf die Verteidiger!"
PreludeBriefing[page].position = GetPosition("Pilgrim"
StartBriefing(PreludeBriefing)
end
---------------------------------------------------------------------------------------------
-- BriefingFinished "Prelude"
------------------------------------------------------------------------------
function PreludeBriefingFinished()
ResolveBriefing(PreludeBriefingShowPilgrim)
ResolveBriefing(PreludeBriefingShowArmy)
end
------------------------------------------------------------------------------
-- Creates NPCs
------------------------------------------------------------------------------
function CreateNpcs()
-- Create briefing for NPC
NpcBriefing = {}
NpcBriefing.restoreCamera = true
page = 0
-- Page #1
page = page + 1
NpcBriefing[page] = {}
NpcBriefing[page].title = "NPC"
NpcBriefing[page].text = "Seid gewarnt, ich habe gehört, hier sind zwei Truppen, die besiegt werden müssen.."
NpcBriefing[page].position = GetPosition("npc"
NpcBriefing[page].dialogCamera = true
-- Rufe das Table für das NPC Briefing auf
local Npc = {}
Npc.name = "npc"
Npc.briefing = NpcBriefing
Npc.vanishPos = "npcVanishPos"
Npc.heroName = "Dario"
Npc.wrongHeroMessage = "Tut mir leid, ich rede nur mit Dario."
-- Schaffe den NPC
CreateNPC(Npc)
end
function AuswahlEndeJaNein()
Camera.FollowEntity(held("lager")
local briefing = {}
BRIEFING_ZOOMDISTANCE = 3000
BRIEFING_ZOOMANGLE = 35
local AP, ASP = AddPages(briefing)
ASP("lager","Mentor"," "..
"Ihr könnt nun entscheiden, ob Ihr noch weiterspielen wollt."
local choiceEinsatzNeu = AP {
mc = {
title = "Das Ende entscheiden",
text = "Der Mentor erwartet eine Entscheidung",
firstText = "JA ICH WILL ALLES ERKUNDEN!",
secondText = "NEIN SCHLUSS JETZT",
firstSelected = 3,
secondSelected = 5
}
}
AP {text = "Mentor "..
"@cr Ihr koennt nun entscheiden, wie lange Ihr noch spielen wollt. "..
"@cr Wenn Ihr genug habt, fuehrt Euren Held zum Lagerfeuer."}
AP (nil);
AP {text = "Mentor "..
"@cr Gut, dann fuehrt Euren Held zum Lagerfeuer."}
briefing.finished
= function()
if GetSelectedBriefingMCButton( choiceEinsatzNeu ) == 1 then
Tools.ExploreArea( 1, -1, 900 ) --deckt als Dank die Map auf.
HeldAmLagerf()
return true
else
HeldAmLagerf()
end
end
StartBriefing(briefing);
end
function HeldAmLagerf()
local beiLf = {
EntityName = "held",
TargetName = "Lagerf",
Distance = 600,
Callback = function()
Victory()
end
}
SetupExpedition(beiLf)
end
ArisSchwester
|
#2 26.03.2010 01:44 Beiträge: 48 |
den Code mit Viktory
.....das andere wie vorher
function FirstMapAction()
CreatePlayer2()
CreateArmyOne()
CreatePreludeBriefing()
StartSimpleJob("VictoryJob"
CreateNpcs()
end
.....das andere wie vorher
function VictoryJob()
if IsDead("player2" then
ResolveBriefing(PreludeBriefingDestroyHQ)
Victory()
return true
end
end
.... das andere wie vorher
function AuswahlEndeJaNein()
Camera.FollowEntity(held("lager")
local briefing = {}
BRIEFING_ZOOMDISTANCE = 3000
BRIEFING_ZOOMANGLE = 35
local AP, ASP = AddPages(briefing)
ASP("lager","Mentor"," "..
"Ihr könnt nun entscheiden, ob Ihr noch weiterspielen wollt."
local choiceEinsatzNeu = AP {
mc = {
title = "Das Ende entscheiden",
text = "Der Mentor erwartet eine Entscheidung",
firstText = "JA ICH WILL ALLES ERKUNDEN!",
secondText = "NEIN SCHLUSS JETZT",
firstSelected = 3,
secondSelected = 5
}
}
AP {text = "Mentor "..
"@cr Ihr koennt nun entscheiden, wie lange Ihr noch spielen wollt. "..
"@cr Wenn Ihr genug habt, fuehrt Euren Held zum Lagerfeuer."}
AP (nil);
AP {text = "Mentor "..
"@cr Gut, dann fuehrt Euren Held zum Lagerfeuer."}
briefing.finished
= function()
if GetSelectedBriefingMCButton( choiceEinsatzNeu ) == 1 then
Tools.ExploreArea( 1, -1, 900 ) --deckt als Dank die Map auf.
HeldAmLagerf()
return true
else
HeldAmLagerf()
end
end
StartBriefing(briefing);
end
function HeldAmLagerf()
local beiLf = {
EntityName = "held",
TargetName = "Lagerf",
Distance = 600,
Callback = function()
Victory()
end
}
SetupExpedition(beiLf)
end
ArisSchwester
|
#3 26.03.2010 02:08 Beiträge: 48 |
Grinsegesicht
Achso, das Grinsegesicht ist natuerlich nicht im Script, das ist ne normale Klammer zu.
Die benoetigten Entites sind auf der Map vorhanden.
aCid
|
#4 26.03.2010 03:03 Beiträge: 275 |
secondText = "NEIN SCHLUSS JETZT",
firstSelected = 3,
secondSelected = 5
}
}
AP {text = "Mentor "..
"@cr Ihr koennt nun entscheiden, wie lange Ihr noch spielen wollt. "..
"@cr Wenn Ihr genug habt, fuehrt Euren Held zum Lagerfeuer."}
AP (nil);
AP {text = "Mentor "..
"@cr Gut, dann fuehrt Euren Held zum Lagerfeuer."}
briefing.finished
= function()
das mal als ausschnitt. rein von der logik fehlt ein AP(nil)
also so
secondText = "NEIN SCHLUSS JETZT",
firstSelected = 3,
secondSelected = 5
}
AP (nil);
}
AP {text = "Mentor "..
"@cr Ihr koennt nun entscheiden, wie lange Ihr noch spielen wollt. "..
"@cr Wenn Ihr genug habt, fuehrt Euren Held zum Lagerfeuer."}
AP (nil);
AP {text = "Mentor "..
"@cr Gut, dann fuehrt Euren Held zum Lagerfeuer."}
briefing.finished
= function()
____________________
Das ist und bleibt ein Spiel! - Wir sind hier nicht vor Gericht.
----------------------------------------------------------------------
Mapperhilfen für S5:
http://www.siedler-maps.de/forum/Siedler-DEdK-Script-Forum-27/index.htm
http://www.siedler-maps.de/for...und-andere-Ressourcen-8688.htm
http://www.siedler-maps.de/for...unktionen-Skripte-etc-8706.htm
kingsia
|
#5 26.03.2010 05:34 Beiträge: 750 |
@aCid
Du hast eine Briefingzeile übersehen.
Diese extra AP(nil) ist nicht nötig.
@ ArisSchwester
Weil du beide die "alte" und "neue" Briefingform benutzt, frag ich mich ob du die beiden benötigten Comfortfunktion im Skript hast.
Ohne die kann dein Auswahlbriefing nicht funktionieren.
Gruss
Kingsia
function CreateShortPage( _entity, _title, _text, _dialog, _explore) local page = { title = _title, text = _text, position = GetPosition( _entity ), action = function ()Display.SetRenderFogOfWar(0) end }; if _dialog then if type(_dialog) == "boolean" then page.dialogCamera = true; elseif type(_dialog) == "number" then page.explore = _dialog; end end if _explore then if type(_explore) == "boolean" then page.dialogCamera = true; elseif type(_explore) == "number" then page.explore = _explore; end end return page; end function AddPages( _briefing ) local AP = function(_page) table.insert(_briefing, _page); return _page; end local ASP = function(_entity, _title, _text, _dialog, _explore) return AP(CreateShortPage(_entity, _title, _text, _dialog, _explore)); end return AP, ASP; end
ArisSchwester
|
#6 26.03.2010 06:10 Beiträge: 48 |
Oh danke an Euch beide
@aCid und @kinksia
Nicht zu fassen, dass um diese Zeit noch (oder schon) jemand antwortet. Vielen Dank aCid und vielen Dank kingsia, ich werd es gleich mal ausprobieren. Du hast natürlich recht, ich hab die Comfortfunktionen nicht im Script. Sage Bescheid, wenn es geklappt hat.
Gruss
ArisSchwester
(die alle hoffentlich bald mit einer ersten Map begluecken wird)
Mordred
|
#7 26.03.2010 08:20 Beiträge: 939 |
Du kannst dir ja auch ein eigenes Ende machen
Da hats quasi unbegrenzt viele Lösungen: Klick den an oder den, drücke die 1 oder die 2, bringe den oder den um, warte den Countdown ab oder net, ...
Schön, dass noch jemand Maps macht
Mordred
kingsia
|
#8 26.03.2010 17:24 Beiträge: 750 |
Zitat von ArisSchwester:
@aCid und @kinksia
Nicht zu fassen, dass um diese Zeit noch (oder schon) jemand antwortet.
Bei aCid war es vielleicht noch aber bei mir war es schon. Ich muss wegen Arbeit früh aufstehen und bei meine erste Kaffee schaue ich hier rein ob ich ein Skriptkollegin(nen) sofortige "erste Hilfe" leisten muss.
Zitat von ArisSchwester:
(die alle hoffentlich bald mit einer ersten Map begluecken wird)
Ich warte sehnsüchtig darauf aber bitte nicht voreilig die Karte veröffentlichen.
Hast du ein Testerteam parat und in die Startlöcher ?
Gruss
Kingsia
ArisSchwester
|
#9 26.03.2010 21:03 Beiträge: 48 |
Blutige Anfängerin
@mordred
Bin noch blutige Anfaengerin und muss noch gaanz viel testen und lesen, bis ich mich auf die Bühne wage . . .
@kingsia
Du hast natürlich Recht, ich habe übrigens das obige Problem immer noch nicht gelöst, aber ich knobel noch und lerne dabei. (Hatte das, was Du geschrieben, reinkopiert und dann nochmals testlaufen lassen. Wieder kann ich zwar weiterspielen aber weiter passiert nix.) Beim Herausfinden des Fehlers lernt man ja auch.
Uebrigens, ich hoffe, Du hast nichts dagegen, wenn ich Deine Idee, die Realitaet in die Story reinlaufen lasse, weiterentwickel. Es macht mir unheimlich Spaß, als ArisSchwester dort aufzutauchen. Und Pilgrim weint sich bei mir aus, weil sie ihn alle immer so schlecht behandeln. Ausserdem taucht noch Alice Schwarzer auf und regt sich ueber die Darstellung der Frauenrolle in DedK auf: Entweder Hexe oder Barbie, sonst gibts nichts weiter. Keine einfache Baeurerin, keine Wanderin, nur sexy Prinzessinnen, sexy böse Gräfinnen oder genauso barbihaft Ari, auch wenn sie noch am normalsten aussieht.
Also: Ideen sind genug da, die Umsetzung dauert noch. Habe mitnichten ein Testerteam, das rufe ich erst zusammen, wenn ich in ein paar Dingen fit bin. Zum Beispiel muss ich das obige Problem erstmal loesen. Keine Angst also, es dauert noch.
Finde ich ja lieb, dass Du vor der Arbeit an uns denkst. Da macht es Spass, weiterzuknobeln, damit man endlich auch auf die Buehne gehen kann.
Obwohl kingsia, Dein erster Auftritt (und auch Dein zweiter) waren so genial, damit kann sich so schnell keine/keiner messen.
Herzliche Gruesse
heute ist Freitag und beim schönen Krimi und was zu knabbern laesst sich gemuetlich weiterknobel.
Siedler_Team
|
#10 27.03.2010 00:15 Beiträge: 847 |
Zitat von ArisSchwester:
...ich habe übrigens das obige Problem immer noch nicht gelöst, aber ich knobel noch und lerne dabei. (Hatte das, was Du geschrieben, reinkopiert und dann nochmals testlaufen lassen. Wieder kann ich zwar weiterspielen aber weiter passiert nix.) Beim Herausfinden des Fehlers lernt man ja auch.
Hi ArisSchwester,
ich denke, das Problem, dass kein Victory() nach der Auswahl "Weiterspielen" kommen kann, liegt hier:
function VictoryJob() if IsDead("player2") then ResolveBriefing(PreludeBriefingDestroyHQ) StartSimpleJob ("AuswahlEndeJaNein()" --<-- hier return true end end
1.) Darfst Du AuswahlEndeJaNein() NICHT als Job starten, sondern als ganz normale Funktion. Wie ein ganz normales Briefing.
Die obige Funktion also dann so:
function VictoryJob() if IsDead("player2") then ResolveBriefing(PreludeBriefingDestroyHQ) AuswahlEndeJaNein() --<-- so return true end end
Davon abgesehen hattest Du Dich bei dem Job verschrieben.
Wenn man einen Job startet (...was hier aber nicht sein darf) dann hätte der Aufruf so lauten müssen:
StartSimpleJob("AuswahlEndeJaNein")
In dem Auswahlbriefing selbst war noch ein logic-Fehler.
Muster für AuswahlEndeJaNein():
Aufruf:
AuswahlEndeJaNein()
Die Funktion:
function AuswahlEndeJaNein() Camera.FollowEntity(GetEntityId("held")) local briefing = {noEscape = true} BRIEFING_TIMER_PER_CHAR = 0.8 BRIEFING_ZOOMDISTANCE = 2500 BRIEFING_ZOOMANGLE = 25 local AP, ASP = AddPages(briefing) ASP("lager","Mentor"," ".. "Ihr könnt nun entscheiden, ".. "@cr ob Ihr noch weiterspielen wollt.", true) local choiceEinsatzNeu = AP { mc = { title = "Das Ende entscheiden", text = "Der Mentor erwartet eine Entscheidung.", firstText = "ICH MÖCHTE WEITERSPIELEN", secondText = "HIER SOLL SCHLUSS SEIN", firstSelected = 3, secondSelected = 5 } } AP {text = "Mentor ".. "@cr Vielen Dank! ".. "@cr Entscheidet selbst, wann Schluss sein soll. ".. "@cr Wenn Ihr genug habt, fuehrt Euren Held zum Lagerfeuer. ".. "@cr Die Karte wird nun aufgedeckt!"} AP (nil); AP {text = "Mentor" ".. "@cr Tja, des Menschen Wille ist sein Himmelreich. ".. "@cr Dann ist eben jetzt Schluss! Vielen Dank!"} briefing.finished = function() if GetSelectedBriefingMCButton( choiceEinsatzNeu ) == 1 then Tools.ExploreArea( 1, -1, 900 ) HeldAmLagerf() else Victory() end end StartBriefing(briefing); end
Erklärung:
Auch wenn der Spieler sich für "HIER SOLL SCHLUSS SEIN" entscheidet, sollte er mit einer Siegmeldung belohnt werden. Daher hinter else Victory()
Entscheidet er sich für "Weiterspielen", wird aufgedeckt und die Funktion HeldAmLagerf() aufgerufen.
Erreicht der Held per:
function HeldAmLagerf() local beiLf = { EntityName = "held", TargetName = "Lagerf", Distance = 600, Callback = function() Victory() end } SetupExpedition(beiLf) end
...die Entity "LagerF" auf eine Distanz von 600Scm, wird gleichfalls Victory() ausgelöst.
Das Auswahlbriefing ist wie eine Weiche zu verstehen.
Stellt man die Weiche nach rechts, fährt der Zug nach rechts und was am linken Schienenstrang passiert, bekommen die Fahrgäste nicht mit.
Anders herum genauso:
Stellt man die Weiche nach links, fährt der Zug nach links und was am rechten Schienenstrang passiert, bekommen die Fahrgäste nicht mit.
Wie kingsia bereits treffend schrieb, benötigst Du für obiges Briefing die function CreateShortPage und die function AddPages.
Ich hoffe mit diesem kleinen Beispiel wird das etwas klarer, was bei einem mcBriefing passiert.
____________________
Wer altes Wissen ehrt und neues Wissen erlangt, ist bereit, ein Lehrer zu sein. ( -Konfuzius- )
Dieser Beitrag wurde von Siedler_Team am 27.03.2010 um 00:40 editiert.
Siedler_Team
|
#11 27.03.2010 00:18 Beiträge: 847 |
...doppelpost! Gelöscht!
____________________
Wer altes Wissen ehrt und neues Wissen erlangt, ist bereit, ein Lehrer zu sein. ( -Konfuzius- )
ArisSchwester
|
#12 27.03.2010 07:32 Beiträge: 48 |
Dank an das Siedler-Team, leider Problem mit true
Hallo liebes Siedler-Team,
vielen Dank erstmal für Eure Mühe, das war gut erklärt. Leider gibt ein Problem mit den Zeilen:
ASP("lager","Mentor"," "..
"Ihr könnt nun entscheiden, ob Ihr noch weiterspielen wollt.",true)-------HIER
LuaEdit meckert bei true, auch wenn ich es so ändere . . .
ASP("lager","Mentor"," "..
"Ihr könnt nun entscheiden, ob Ihr noch weiterspielen wollt."--------------------und HIER
true --------------------HIER
local choiceEinsatzNeu = AP {
mc = {
title = "Das Ende entscheiden",
text = "Der Mentor erwartet eine Entscheidung",
firstText = "JA ICH WILL ALLES ERKUNDEN!",
secondText = "NEIN SCHLUSS JETZT",
.....usw.
Bin also weiter am knobeln, die vorher korrigierte Stelle ist ok., das mit der falschen Synthax beim Job hatte ich selber schon geaendert, das andere habe ich voll begriffen . . . und entsprechend geaendert.
Wie war es doch bei den alten Griechen . . . oder wem auch immer. Wenn man ein Problem geloest hat, kommen zwei naechste ...
Ich melde mich mal, wenn ich alles geloest habe, verdammich!!! (fussstampf!!)
Herzliche Gruesse
ArisSchwester
Siedler_Team
|
#13 27.03.2010 08:36 Beiträge: 847 |
Zitat von ArisSchwester:
Leider gibt ein Problem mit den Zeilen:
ASP("lager","Mentor"," ".. "Ihr könnt nun entscheiden, ob Ihr noch weiterspielen wollt.", true)
Hi ArisSchwester,
dann liegt es an etwas anderem, was wir bisher übersehen haben. Da der debugger bei Dir und dieser Zeile meckert und bei mir nicht, ist davon auszugehen, dass wir beide zwei verschiedene Comfort-Funktionen für die Briefinggeschichte verwenden.
1. Schritt:
obige Zeile ändern zu:
ASP("lager","Mentor"," ".. "Ihr könnt nun entscheiden, ob Ihr noch weiterspielen wollt.")
2. Sollte das nicht helfen, gehts ins Detail.
Mein Angebot siehe Private Nachricht.
____________________
Wer altes Wissen ehrt und neues Wissen erlangt, ist bereit, ein Lehrer zu sein. ( -Konfuzius- )
kingsia
|
#14 27.03.2010 16:06 Beiträge: 750 |
Hallo ArisSchwester,
Welche Lua Editor benutzt du?
Vielleicht meckert es nicht wegen true aber wegen den umlaut.
Vorher hattest du "koentt" und jetzt steht "könnt".
Um Umlaute im Briefings angezeigt zu bekommen brauchst du noch ein Komfortfunktion.
Gruss
Kingsia
Siedler_Team
|
#15 27.03.2010 18:14 Beiträge: 847 |
Zitat von kingsia:
Hallo ArisSchwester,
Um Umlaute im Briefings angezeigt zu bekommen brauchst du noch ein Komfortfunktion.
Jupp! Ganz vergessen!
Damit Umlaute verarbeitet werden können, muss das hier:
ActivateBriefingsExpansion()
...in die FMA
Die Comfortfunktion dazu:
function ActivateBriefingsExpansion() if not unpack{true} then local unpack2; unpack2 = function( _table, i ) i = i or 1; assert(type(_table) == "table"); if i <= table.getn(_table) then return _table[i], unpack2(_table, i); end end unpack = unpack2; end Briefing_ExtraOrig = Briefing_Extra; Briefing_Extra = function( _v1, _v2 ) for i = 1, 2 do local theButton = "CinematicMC_Button" .. i; XGUIEng.DisableButton(theButton, 1); XGUIEng.DisableButton(theButton, 0); end if _v1.action then assert( type(_v1.action) == "function" ); if type(_v1.parameters) == "table" then _v1.action(unpack(_v1.parameters)); else _v1.action(_v1.parameters); end end Briefing_ExtraOrig( _v1, _v2 ); end; GameCallback_EscapeOrig = GameCallback_Escape; StartBriefingOrig = StartBriefing; EndBriefingOrig = EndBriefing; MessageOrig = Message; CreateNPCOrig = CreateNPC; StartBriefing = function(_briefing) assert(type(_briefing) == "table"); if _briefing.noEscape then GameCallback_Escape = function() end; briefingState.noEscape = true; end StartBriefingOrig(Umlaute(_briefing)); end EndBriefing = function() if briefingState.noEscape then GameCallback_Escape = GameCallback_EscapeOrig; briefingState.noEscape = nil; end EndBriefingOrig(); end; Message = function(_text) MessageOrig(Umlaute(tostring(_text))); end; CreateNPC = function(_npc) CreateNPCOrig(Umlaute(_npc)); end; Umlaute = function(_text) local texttype = type(_text); if texttype == "string" then _text = string.gsub( _text, "ä", "\195\164" ); _text = string.gsub( _text, "ö", "\195\182" ); _text = string.gsub( _text, "ü", "\195\188" ); _text = string.gsub( _text, "ß", "\195\159" ); _text = string.gsub( _text, "Ä", "\195\132" ); _text = string.gsub( _text, "Ö", "\195\150" ); _text = string.gsub( _text, "Ü", "\195\156" ); return _text; elseif texttype == "table" then for k, v in _text do _text[k] = Umlaute( v ); end return _text; else return _text; end end; end
...in die Abteilung Comfort Funktionen.
Die braucht man immer und die tut auch nicht weh.
Das true an der entsprechenden Stelle, wo bei Dir gemeckert wurde, war nicht ausschlaggebend. Es war der Umlaut ö in könnt.
Gut erkannt kingsia!
____________________
Wer altes Wissen ehrt und neues Wissen erlangt, ist bereit, ein Lehrer zu sein. ( -Konfuzius- )
Dieser Beitrag wurde von Siedler_Team am 27.03.2010 um 18:33 editiert.
Mordred
|
#16 27.03.2010 20:08 Beiträge: 939 |
@arisschwester:
Hilfe findest du hier reichlich!
Aber bitte: (damit die anderen dir besser helfen können )
[quote]
function FirstMapAction()
-- Deine Skripte und funktionen
end
[/quote]
oder noch besser:
[code]
function FirstMapAction()
-- Deine Skripte und funktionen
end
...
[/code]
Sieht dann so aus: :) (keine Smileys mehr!)
Mordred
ArisSchwester
|
#17 27.03.2010 22:44 Beiträge: 48 |
zwei Fehler erkannt, jetzt teste ich
Lieber Mordred, lieber kingsia, liebes Siedler-Team,
nehme an, es sind die zwei Fehler, das ö und die Comfort-Funktion Briefing. Bin ueberwaeltig von Euren gaaaaanz lieben Hilfen, dadurch konnte ich noch garnicht das Geaenderte testen.
Ich teste jetzt und sage sofort Bescheid, wenn es klappt. (Dauert ungefaehr eine halbe Stunde.)
Habe flodder meine Scripte geschickt, weitere Fehler wird er merken.
Vieeelen lieeben Dank
Gruss
ArisSchwester
ArisSchwester
|
#18 28.03.2010 00:36 Beiträge: 48 |
HURRAAAAAA, es klappt
Liebe freundlichen Ratgeber und Helfer,
Ihr wart ueberwaeltigend und beide Versionen klappen. Flodder hat alles. Im Prinzip war es das ö und fehlende Comfortfunktionen.
Was lange waert, wird endlich gut!!!
Jetzt faengt die Arbeit an!
Ich freue mich und bedanke mich nochmal
Gruss
ArisSchwester
Seiten: 1