Erweiterte Entlassung im MP
» Siedler Map Source Forum » Siedler DEdK Script Forum » Erweiterte Entlassung im MP
Seiten: 1
RitterLeo
|
#1 30.06.2019 12:28 Beiträge: 237 |
Erweiterte Entlassung im MP
Ich wollte hier mal nachfragen ob es eine Möglichkeit gibt, im Multiplayer alle Leibeigenen zu entlassen.
Derzeit habe ich nur herausgefunden wie man eben einen Button einfügt jedoch ohne Text usw.
Deshalb nun die Frage ob jemand weiss wie ich diesem Button den Nutzen gebe alle Leibeigenen von der jeweiligen SpielerId zu entlassen. In diesem Fall in der Burg.
____________________
Die Gier eines Menschen kann man mit der einer Pflanze vergleichen:
Hat sie einmal genug Wasser und Sonne wächst sie um noch mehr zu bekommen.
mcb
|
#2 30.06.2019 13:59 Beiträge: 1472 |
Wo hast du denn den Button her?
In jedem Fall musst du ne action funktion schreiben, die dann die eigentliche Arbeit macht. Da musst du dann an die ids der Serfs kommen und die entlassen (was zum glück von siedler synchronisiert wird, du hast also kein problem damit im mp).
RitterLeo
|
#3 30.06.2019 16:37 Beiträge: 237 |
den Button habe ich erstmal nur angezeigt.
XGUIEng.ShowWidget("Levy_Duties",1) XGUIEng.TransferMaterials("Research_Laws", "Levy_Duties")
Natürlich habe ich so eine ähnliche funktion bei dem Button Lightbricks in der Ziegelhütte gefunden. Zudem weiss ich derzeit nur bei einem Spiel das es möglich ist alle Serfs zu löschen (+Geld dafür bekommen) nämlich bei Die Schlacht der Helden mit Salims fähigkeit.
Jedoch weiss ich noch nicht genau wie sich dieser Button nutzen lässt, bzw. wie ich das dann auf die einzelnen Spieler anwenden sollte ob nun für jeden extra oder gekürzt.
Aber an die Id der Serfs zu kommen sollte ja kein Problem sein.
Edit: Gefunden, sollten die ID 17 haben.
____________________
Die Gier eines Menschen kann man mit der einer Pflanze vergleichen:
Hat sie einmal genug Wasser und Sonne wächst sie um noch mehr zu bekommen.
Dieser Beitrag wurde von RitterLeo am 30.06.2019 um 17:11 editiert.
mcb
|
#4 30.06.2019 19:52 Beiträge: 1472 |
Dazu musst du die Funktion GUIAction_LevyTaxes überschreiben.
Also ungefähr so:
function GUIAction_LevyTaxes() for id in S5Hook.EntityIterator(Predicate.OfPlayer(GUI.GetPlayerID(), Predicate.OfType(Entities.PU_Serf)) do GUI.ExpelSettler(id) end end
Den Toltip kannst du mit GUITooltip_LevyTaxes ändern, ne update hat der button nicht.
Edit: Ich nutze da den Hook um an die entityids zu kommen, kannst natürlich auch sowas wie SucheAufDerWelt benutzen, falls du den hook nicht magst.
RitterLeo
|
#5 30.06.2019 20:32 Beiträge: 237 |
Werde ich mal ausprobieren, wäre nämlich sehr nützlich für MP da wir ansonsten vor WS Ende um die 100 Leibis löschen müssten.
Wir werden sehen wie gut das klappt.
Haste da noch was um den Button zu beschriften?
Schonmal vielen dank dir mcb.
LG RitterLeo
____________________
Die Gier eines Menschen kann man mit der einer Pflanze vergleichen:
Hat sie einmal genug Wasser und Sonne wächst sie um noch mehr zu bekommen.
mcb
|
#6 30.06.2019 20:42 Beiträge: 1472 |
Hatte ich auch schon greschrieben, dazu musst du die GUITooltip_LevyTaxes überschreiben, also so:
function GUITooltip_LevyTaxes() XGUIEng.SetText("TooltipBottomText", " @color:180,180,180 Massenentlassung @color:255,255,255 @cr Entlasst ALLE Eure Leibeigenen!") XGUIEng.SetText("TooltipBottomCosts", "") XGUIEng.SetText("TooltipBottomShortCut", "") end
(Den Text kannst du natürlich ändern wie du willst)
RitterLeo
|
#7 01.07.2019 13:16 Beiträge: 237 |
Dann geh ich mal zu einem anderem Problem über.
Wenn ich bei einem Tribut für 800 Stein die Festung erlauben will klappt das nicht, habe jeweils mit Research and AllowTechnologie versucht jedoch vergebens. Das Tribut wird ja angezeigt doch irgendwie will es nicht klappen.
Weiss da jemand eine Lösung?
____________________
Die Gier eines Menschen kann man mit der einer Pflanze vergleichen:
Hat sie einmal genug Wasser und Sonne wächst sie um noch mehr zu bekommen.
mcb
|
#8 01.07.2019 14:30 Beiträge: 1472 |
Es ist ne MP Map? Dan sieh mal hier ganz unten: http://www.siedler-games.de/si.../doku.php?id=tutorials:tribute
RitterLeo
|
#9 01.07.2019 15:19 Beiträge: 237 |
Nein es ist eine Singleplayer.
____________________
Die Gier eines Menschen kann man mit der einer Pflanze vergleichen:
Hat sie einmal genug Wasser und Sonne wächst sie um noch mehr zu bekommen.
RitterLeo
|
#11 01.07.2019 16:49 Beiträge: 237 |
also ich mach dies normalerweise so:
function Trader2_Coming() CreateMilitaryGroup(4, Entities.CU_MasterBuilder, 0, GetPosition("Spawn_Trader"),"Architekt") CreateNpc_Architekt() Move("Architekt","Move_Trader") end function CreateNpc_Architekt() local npc = { name = "Architekt", heroName = "Pilgrim", marker = true, wrongHeroMessage = "Nein, bloss weg", callback = function() Briefing_Architekt() RemoveNpcFromTable("Architekt") end } CreateNPC(npc) end function Briefing_Architekt() Briefing_SetParameter(true, 0.8, 2000, 10, 900,13) local briefing = {} local AP, ASP = AddPages(briefing); ASP("Architekt","Architekt", "Hier ist ja alles öde, keine Prachtvollen bauten hier.", true) ASP("Architekt","Architekt", "Willst du vielleicht etwas Kultur hierher bringen? Sagen wir 800 Stein und ich lass dich eine Festung bauen, die wird sicher sehr schön.", true) StartBriefing( briefing) briefing.finished = function() TributFestung() end end function TributFestung() local tribute = {} tribute.playerId = 1; tribute.text = "Zahlt 800 Stein damit euch der Architekt die Burg ausbauen laesst"; tribute.cost = {Stone = 800}; tribute.Callback = TributFestungBezahlt; AddTribute( tribute ) end function TributFestungBezahlt() tribute.Technologies = { Technologies.UP1_Headquarter }; Move("Architekt","Spawn_Trader") StartSimpleJob("DestroyTrader2") end; function DestroyTrader2() if IsNear("Architekt","Spawn_Trader", 600) then DestroyEntity("Architekt") StartCountdown( 60*9,Trader3_Coming,false) return true end end
Gedacht ist das eben einige male ein Händler mit einer neuen Technologie vorbeikommen nachdem der vorherige Händler eine Gewisse Position erreicht hat.
Ich habe schon bereits getestet und der Architekt ,in diesem Falle, wird erschaffen und geht auch wieder sobald der Tribut bezahlt wurde, jedoch ist die Festung nicht ausbaubar.
____________________
Die Gier eines Menschen kann man mit der einer Pflanze vergleichen:
Hat sie einmal genug Wasser und Sonne wächst sie um noch mehr zu bekommen.
mcb
|
#12 01.07.2019 17:16 Beiträge: 1472 |
Liegt daran, das du die Technologie nirgendwo erlaubst/erforschst.
So sollte es funktionieren:
function TributFestungBezahlt() AllowTechmology(Technologies.UP1_Headquarter) Move("Architekt","Spawn_Trader") StartSimpleJob("DestroyTrader2") end
RitterLeo
|
#13 01.07.2019 17:23 Beiträge: 237 |
Dann muss ich vorher irgendetwas falsch geschrieben haben weil es da nicht klappte. Naja, danke dir jedenfalls .
____________________
Die Gier eines Menschen kann man mit der einer Pflanze vergleichen:
Hat sie einmal genug Wasser und Sonne wächst sie um noch mehr zu bekommen.
RitterLeo
|
#14 01.07.2019 19:51 Beiträge: 237 |
Wenn ich die von dir geschriebene Variante zum Benennen des Buttons verwende erscheint irgendwie garnichts. Es steht halt immernoch Taxis: 0 da usw.
Und ja ich Rufe die funktion auf .
____________________
Die Gier eines Menschen kann man mit der einer Pflanze vergleichen:
Hat sie einmal genug Wasser und Sonne wächst sie um noch mehr zu bekommen.
mcb
|
#15 02.07.2019 13:57 Beiträge: 1472 |
Du musst die Funktion nicht Aufrufen, du musst sie nur da lassen, damit Siedler sie Aufrufen kann, wenn der Tooltip gesetzt werden soll.
Vermutlich wird deine Variante zuerst geladen und die originale danach, was dazu führt das deine Variante überschrieben wird. Wenn du deine Funktionsdefinition in die FMA packst, sollte es funktionieren:
function FirstMapAction() -- other stuff function GUITooltip_LevyTaxes() XGUIEng.SetText("TooltipBottomText", " @color:180,180,180 Massenentlassung @color:255,255,255 @cr Entlasst ALLE Eure Leibeigenen!") XGUIEng.SetText("TooltipBottomCosts", "") XGUIEng.SetText("TooltipBottomShortCut", "") end end
RitterLeo
|
#16 02.07.2019 20:43 Beiträge: 237 |
Ah wie schön wenn alles funktioniert.
Wird bestimmt leichter wenn ich das dann irgendwie in die Scripte einbauen kann (derzeit ohne Erfolg).
Aber trotzdem vielen dank!
____________________
Die Gier eines Menschen kann man mit der einer Pflanze vergleichen:
Hat sie einmal genug Wasser und Sonne wächst sie um noch mehr zu bekommen.
Seiten: 1