Shoutbox

Author Topic: KI cheats abstellen / KI soll Gold auszugeben  (Read 5792 times)

0 Members and 1 Guest are viewing this topic.

Offline dip12

  • Newbie
  • *
  • Posts: 57
  • Reputation Power:
KI cheats abstellen / KI soll Gold auszugeben
« on: 22 July 2015, 19:31:22 »
Ist es moeglich per mod die KI cheats abzustellen, besonders die neuen in 4.21 die es verhindern, dass die KI bankrott wird?
Es macht wenig Spass wenn man die KI nur durch massen-rekrutierung von Schergen ausschalten kann.
Ausserdem adoptiert die KI jetzt dauernd Waisen und da sie auch Geldspritzen erhaelt, kann sie das auch ohne Bremsen tun -> siehe Resultat oben

Desweiteren wuerde ich gerne wissen, ob man die KI dazu bringen auch mal das Gold auszugeben. Grossteils hortet sie Gold ohne sich gross Titel zu kaufen oder existierende Werkstaetten/Haeuser zu kaufen -> Sie baut lieber neue Gebaeude, wenn ueberhaupt.
Ich finde, besonders die Schatten-KI sollte Gebaeude aufkaufen wenn sie vorhanden sind um der Stadt mehr Leben einzuhauchen.

Wenn ein solches mod gaebe, wuerde ich mich doch sehr freuen. Oder ihr koennt mir sagen wie ich das obrige selbst schaffen koennte :)

Offline Fajeth

  • Hero Member
  • ****
  • Posts: 612
  • Reputation Power:
Re: KI cheats abstellen / KI soll Gold auszugeben
« Reply #1 on: 22 July 2015, 21:20:18 »
Du musst nur die Measure "Bricklebrit" auskommentieren, dann gibts keine Notspritzen mehr gegen Armut.

Ansonsten lässt sich das Adoptionsverhalten Scripts/AI/BaseTree/CheckDynasty/Actions/ac_AdoptOrphan.lua steuern.

Ich bin allerdings ein Freund von Sandbox und nicht von "Gegner ausschalten", aber jeder wie er mag.

Die leeren Gebäude stören mich schon länger, ich hab aber noch keine schöne Möglichkeit gefunden, die KI zu zwingen, hin und wieder Gebäude zu kaufen. Wenn du da was finden solltest, lass es mich wissen.

Offline dip12

  • Newbie
  • *
  • Posts: 57
  • Reputation Power:
Re: KI cheats abstellen / KI soll Gold auszugeben
« Reply #2 on: 22 July 2015, 23:42:58 »
Mir ist aufgefallen, dass die KI Wohngebaeude kauft wenn die hauptresidenz nicht mehr verfuegbar ist, anstelle von ein neues Haus zu bauen.

Aber neue Schattendynastien scheinen eher Haeuser zu bauen als zu kaufen (falls ich mich recht erinnere)

Mit Werkstaetten baut die KI immer anstelle von kaufen. z.b. es gibt 1 katholische kirche und ich schalte die dynastie aus, denen die kirche gehoert. Sofort (innerhalb weniger stunden) baut eine schattendynastie (sofern bauplatz vorhanden) eine neue katholische kirche.


Weitere Tests: Wenn in der config entweder Wonsitze oder Werkstatten auf 0 gesetzt werden fuer die KI, stirbt die Dynastie bei 14:00 aus
Trotzdem: ohne Wohnsitz zu starten heisst, das die KI immer einen Wohnsitz am Anfang kauft.
Aber: Ohne Werkstaette anzufangen bedeutet, dass die KI nie eine baut oder kauft bevor das Spiel um 14:00 zu ende ist

Daher scheint es eher, dass ein Skript dafuer fehlt?


kA was genau das ist, aber scheint vielleicht mit bau/kauf zu tun zu haben in CityPingTime.lua
Code: [Select]
function CheckBuilding(Class, Type, Level, Count)

if not Count then
Count = 1
end

local BuildTotal = CityGetBuildings("", Class, Type, -1, -1, FILTER_IGNORE, "Found")
local Ist = 0

for l=0,BuildTotal-1 do
if BuildingGetLevel("Found"..l) >= Level then
Ist = Ist + 1
if Ist >= Count then
return
end
end
end

for l=0,BuildTotal-1 do
if BuildingGetLevel("Found"..l) < Level then
BuildingLevelMeUp("Found"..l, -1)
Ist = Ist + 1
if Ist>=Count then
return
end
end
end

while Ist < Count do
local Proto = ScenarioFindBuildingProto(Class, Type, Level, -1)
if not Proto or Proto==-1 then
break
end

if not CityBuildNewBuilding("", Proto, nil, "Building") then
break
end
Ist = Ist + 1
end

end

function CheckChurch(MaxCount)
local ChEv = CityGetBuildingCount("", -1, GL_BUILDING_TYPE_CHURCH_EV, -1, -1, FILTER_HAS_DYNASTY)
local ChCa = CityGetBuildingCount("", -1, GL_BUILDING_TYPE_CHURCH_CATH, -1, -1, FILTER_HAS_DYNASTY)

if ChEv + ChCa < MaxCount then
-- no church, so create one

local TotalChEv = CityGetBuildingCount("", -1, GL_BUILDING_TYPE_CHURCH_EV, -1, -1, FILTER_NO_DYNASTY)
local TotalChCa = CityGetBuildingCount("", -1, GL_BUILDING_TYPE_CHURCH_CATH, -1, -1, FILTER_NO_DYNASTY)

if TotalChEv>0 and TotalChCa==0 then
AICheckWorkingPlace("", GL_BUILDING_TYPE_CHURCH_EV, ChEv+1)
elseif TotalChCa>0 and TotalChEv==0 then
AICheckWorkingPlace("", GL_BUILDING_TYPE_CHURCH_CATH, ChCa+1)
else
if Rand(100) < 50 then
AICheckWorkingPlace("", GL_BUILDING_TYPE_CHURCH_EV, ChEv+1)
else
AICheckWorkingPlace("", GL_BUILDING_TYPE_CHURCH_CATH, ChCa+1)
end
end
end
end
« Last Edit: 23 July 2015, 00:24:02 by dip12 »

Offline Fajeth

  • Hero Member
  • ****
  • Posts: 612
  • Reputation Power:
Re: KI cheats abstellen / KI soll Gold auszugeben
« Reply #3 on: 23 July 2015, 09:58:35 »
Sieht interessant aus. Das erste scheint für den Gebäudeausbau zuständig zu sein und das Zweite für das Vorhandensein von Kirchen.

Vllt. lässt sich damit ne Mod schreiben...

Offline dip12

  • Newbie
  • *
  • Posts: 57
  • Reputation Power:
Re: KI cheats abstellen / KI soll Gold auszugeben
« Reply #4 on: 23 July 2015, 16:14:22 »
ms_071_BuyBuilding.lua

Braucht das etwas mehr im AI skript?

Denke mal dass die daher nichts kauft
« Last Edit: 23 July 2015, 16:17:50 by dip12 »

Offline Fajeth

  • Hero Member
  • ****
  • Posts: 612
  • Reputation Power:
Re: KI cheats abstellen / KI soll Gold auszugeben
« Reply #5 on: 24 July 2015, 10:51:05 »
Also ich habe jetzt eine Möglichkeit gefunden, wie man anscheinend mehr Shadows dazu anhält, einen Betrieb zu Spielbeginn zu kaufen und die Stadt überprüfen zu lassen, ob mindestens 1 Gebäude eines bestimmten Typs besetzt ist. Meine ersten Tests sahen ganz gut aus, in jeder Stadt waren danach Obstbauer, Mine (sofern vorhanden), Holzfäller besetzt.

DefaultCampaign.lua:

Suche

Code: [Select]
function CreateShadowDynasty(Number, City, NewDynastyAlias)

local PrimTypes = { GL_BUILDING_TYPE_MINE, GL_BUILDING_TYPE_RANGERHUT, GL_BUILDING_TYPE_HOSPITAL, GL_BUILDING_TYPE_FARM, GL_BUILDING_TYPE_TAVERN, -1 }


Diese Gebäude werden von den Shadows vorrangig besetzt, wenn sie nicht bereits jemandem gehören. (es wird zufällig ausgewählt)

Ich habe diese Liste noch um GL_BUILDING_TYPE_FRUITFARM, GL_BUILDING_TYPE_MILL erweitert.

Code: [Select]
local Protos = { GL_BUILDING_TYPE_BAKERY, GL_BUILDING_TYPE_SMITHY, GL_BUILDING_TYPE_JOINERY, GL_BUILDING_TYPE_TAILORING, GL_BUILDING_TYPE_ROBBER,
GL_BUILDING_TYPE_ALCHEMIST_SHOP, GL_BUILDING_TYPE_CHURCH_EV, GL_BUILDING_TYPE_CHURCH_CATH, GL_BUILDING_TYPE_CASTLE, GL_BUILDING_TYPE_THIEF,
GL_BUILDING_TYPE_PIRAT, GL_BUILDING_TYPE_BANKHOUSE, GL_BUILDING_TYPE_FRIEDHOF, GL_BUILDING_TYPE_GAUKLER, GL_BUILDING_TYPE_MILL,
GL_BUILDING_TYPE_FRUITFARM, GL_BUILDING_TYPE_STONEMASON }

Das sind die Sekundären Gebäude. Da ich MILL und FRUITFARM schon habe, musste ich diese Einträge streichen, außerdem will ich persönlich keine besetzte CASTLE haben, weil ich finde, dass dieser Beruf für die KI eher verschenkt ist. Das lässt sich natürlich nach belieben anpassen.

WICHTIG: Wenn ihr die Gesamtzahl der PrimTypes oder Protos ändert, müsst ihr auch diese Zahlen hier anpassen:

Code: [Select]

local Start = Rand(5)+1

und

Code: [Select]
if Pos > 5 then

Für die Anzahl von PrimTypes

Code: [Select]
local Start = Rand(17)+1

und

Code: [Select]
if Pos > 17 then

für die sekundären Protos.


Code: [Select]
if CityLevel<=2 then
y = 1
elseif CityLevel==3 then
y = 2
elseif CityLevel==4 then
y = 3
elseif CityLevel==5 then
y = 4
else
y = 5
end

Dieser Teil hier ist allerdings der Interessanteste. Das gibt nämlich die Durchläufe des Scripts, je nach Stadtgröße, vor. Je größer y desto mehr Shadows werden am Anfang ein Gebäude besitzen. Hier muss ich selber noch experimentieren, zumal jedes durch einen Shadow besetzte Gebäude nicht mehr von den Colours gekauft werden kann. Hier müsst ihr euer Maß finden.


In der CityPingHour.lua:

unter
Code: [Select]
function CheckVillage() bzw. equivalent dazu  CheckSmallTown(), CheckTown(), CheckCapital()

diese Einträge hier

Code: [Select]
AICheckWorkingPlace("", GL_BUILDING_TYPE_FARM, 1)
AICheckWorkingPlace("", GL_BUILDING_TYPE_TAVERN, 1)
AICheckWorkingPlace("", GL_BUILDING_TYPE_HOSPITAL, 1)

Ergänzen mit den Gebäuden, die ihr besetzt haben wollt (ihr findet die Bezeichnungen unter DB/GameConstants.dbt

Beispiel

Code: [Select]

AICheckWorkingPlace("", GL_BUILDING_TYPE_FARM, 1)
AICheckWorkingPlace("", GL_BUILDING_TYPE_TAVERN, 1)
AICheckWorkingPlace("", GL_BUILDING_TYPE_HOSPITAL, 1)
AICheckWorkingPlace("", GL_BUILDING_TYPE_MILL, 1)
AICheckWorkingPlace("", GL_BUILDING_TYPE_MINE, 1)
AICheckWorkingPlace("", GL_BUILDING_TYPE_RANGERHUT, 1)
AICheckWorkingPlace("", GL_BUILDING_TYPE_ROBBER, 1)
AICheckWorkingPlace("", GL_BUILDING_TYPE_FRUITFARM, 1)

die 1 ist die Anzahl, der in der Stadt kontrollierten Betriebe durch die KI (Shadow bzw. Colour). Ob die KI hier nur Gebäude kauft oder auch neu baut, ist mir noch nicht klar, kann aber sein.


LG

Offline dip12

  • Newbie
  • *
  • Posts: 57
  • Reputation Power:
Re: KI cheats abstellen / KI soll Gold auszugeben
« Reply #6 on: 24 July 2015, 13:31:38 »
Super, teste ich gleich!

Offline dip12

  • Newbie
  • *
  • Posts: 57
  • Reputation Power:
Re: KI cheats abstellen / KI soll Gold auszugeben
« Reply #7 on: 24 July 2015, 14:10:17 »
Paar Fragen:

Bei local Start muss die nummer in den klammern die anzahl der gebaeude sein? Oder kann ich bei 7 prims zum beispiel auch rand(1)+6 bzw +7 schreiben?

Wenn ich die y variable bei schatten dynastien aendere, muss die anzahl auch der maximalen anzahl der schattendynastien die generiert werden entsprechen? bzw gibt es fehler wenn die y anzahl groesser als die anzahl der dynastien ist?

Offline Fajeth

  • Hero Member
  • ****
  • Posts: 612
  • Reputation Power:
Re: KI cheats abstellen / KI soll Gold auszugeben
« Reply #8 on: 24 July 2015, 16:13:21 »
Also wenn dein y deutlich zu groß ist (im Bereich von 20-30) dann könnte es Probleme geben. Ansonsten werden zu Spielbeginn eigentlich ausreichend Shadows erzeugt, aber probiers aus.

Die random-Zahl legt den "Startpunkt" fest, bei der durch deine Prims/Protos gegangen wird. Du kannst auch "1" hinschreiben", dann beginnt das Script immer mit dem ersten Eintrag des Arrays {}

Offline dip12

  • Newbie
  • *
  • Posts: 57
  • Reputation Power:
Re: KI cheats abstellen / KI soll Gold auszugeben
« Reply #9 on: 24 July 2015, 18:28:09 »
Scheint im Moment gut zu funktionieren.
Dynastie KI hat ein freies Stufe2 Gebaeude gekauft nach ein paar Jahren.

Hab noch nicht probiert was passiert wenn ich eine Dynastie ausloesche ob andere die Gebaeuda dann auch kaufen oder nicht

KI ist weiterhin eher langsam mit Gebaeude aufwerten

Offline dip12

  • Newbie
  • *
  • Posts: 57
  • Reputation Power:
Re: KI cheats abstellen / KI soll Gold auszugeben
« Reply #10 on: 26 July 2015, 00:53:22 »
Wichtige Gebaeude (Krankenhaus, Kirche, Taverne) werden sofort besetzt wenn eine Dynastie ausstirbt mit den Aenderungen von dir, also denke ich, dass das sehr gut gelungen ist :)
Fruitfarm und Windmill (und Wohnsitze) werden nicht immer besetzt, schade aber nicht ganz so schlimm, ausser man kann da auch noch dran drehen?
Finde jedenfalls, dass alle Schattendynastien sich freie Haeuser kaufen sollten

Offline dip12

  • Newbie
  • *
  • Posts: 57
  • Reputation Power:
Re: KI cheats abstellen / KI soll Gold auszugeben
« Reply #11 on: 26 July 2015, 13:41:47 »
Hab vielleicht was nuetzliches gefunden: CheckHome.lua

Das bestimmt wann die KI guckt ob sie sich ein Haus kaufen soll. Ich habe mal bei ShadowDynasty den Officelevel at 2 anstelle von 5 gesetzt und hoffentlich bedeutet das, dass die KI sich auch Haeuser aufkauft!

Eventuell koennte man ein aehnliches Skript schreiben und in den CheckDynastie ordner stellen, wo die AI guckt ob es Gebaeude zum Verkauf bereitstehen, und falls sie den richtigen Beruf haben (und die Werkstatt nicht bereits haben), es sich aufkaufen.

Offline Fajeth

  • Hero Member
  • ****
  • Posts: 612
  • Reputation Power:
Re: KI cheats abstellen / KI soll Gold auszugeben
« Reply #12 on: 26 July 2015, 15:30:47 »
das mit dem CheckHome funktioniert, Problem ist nur, dass die KI dann auch neue Häuser baut und so mitunter kostbare Bauplätze belegt.

Offline dip12

  • Newbie
  • *
  • Posts: 57
  • Reputation Power:
Re: KI cheats abstellen / KI soll Gold auszugeben
« Reply #13 on: 26 July 2015, 15:59:02 »
Hmm kann man die dazu zwingen, dass CheckHome fuer Schattendynastien nur aufgerufen wird, wenn es ueberhaupt Haeuser zum kauf gibt in der Stadt? Also StopMeasure oder return 0 falls es keine unverkaufte Haeuser gibt

Offline Fajeth

  • Hero Member
  • ****
  • Posts: 612
  • Reputation Power:
Re: KI cheats abstellen / KI soll Gold auszugeben
« Reply #14 on: 26 July 2015, 16:27:41 »
ich schätze du könntest dir alle  Residences der City holen, die keine Dynasty haben, ja. (via CityGetRandomBuilding)

 

quarterly