Sie sind nicht angemeldet.

HeyHey91

Ausguck

  • »HeyHey91« ist der Autor dieses Themas

Beiträge: 62

Registrierungsdatum: 21. August 2013

  • Nachricht senden

1

Montag, 2. September 2013, 13:43

Bau meines Szenarios, CG Bequemlichkeit

Hallo zusammen,

ich hab testweise mal 2 Areas mit Platz dazwischen auf einer Insel definiert.
Ein CG ist auf der linken Seite, der andere auf der rechten Seite der Insel, weshalb der attackierende die Einheiten auf das Schiff packt und damit zum gegnerischen Kontor fährt, seine Soldaten entlädt und das Feuer eröffnet. Wenn dann alle Soldaten vom Attackierenden tot sind, stürzt Anno einfach ab.

Hat jemand eine Idee?

Mein Script:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
INITBLOCK()
{
SET_DIPLOMACY("CG01","HUMAN", 0);
SET_DIPLOMACY("CG02","HUMAN", 0);
SET_DIPLOMACY("CG01","CG02", 0);
}



IF PLAYER "CG01" INHABITANTCOUNT "PIONIER" > 10 THEN
{
MINIMAP_ALERT(250, 250);
SET_DIPLOMACY("CG01","HUMAN", -127);
SET_DIPLOMACY("CG02","HUMAN", -127);
SET_DIPLOMACY("CG01","CG02", -127);
ATTACK_AREA ( "CG02", "CG01S" );
}


Die Areas:

"CG01S" 660, 300, 550, 550
"CG02S" 420, 300, 550, 520


Gruß

HeyHey

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »HeyHey91« (19. September 2013, 12:32)


HeyHey91

Ausguck

  • »HeyHey91« ist der Autor dieses Themas

Beiträge: 62

Registrierungsdatum: 21. August 2013

  • Nachricht senden

2

Montag, 2. September 2013, 14:11

Szenario Kriegstest CG vs CG

Das Szenario ist als Datei angehägt
»HeyHey91« hat folgende Datei angehängt:
  • KriegTest1.zip (516,29 kB - 127 mal heruntergeladen - zuletzt: 18. Juni 2023, 01:50)

3

Montag, 2. September 2013, 18:47

Sowas ist auch für mich immer noch Neuland, alle Angaben daher ohne Gewähr.


Aus dem Skriptbuch von drkohler

Zitat


ATTACK_AREA ( "SpAlias", "Areaname" )
Dies befiehlt dem Spieler SpAlias das Gebiet Areaname mit seinem Militär anzugreifen.
Wichtig:
Diese Funktion darf nur einmal aufgerufen werden im Skript für das gewählte Gebiet.
Vor dem Gebrauch des Befehls muss der Befehl SET_DIPLOMACY("SpAlias","HUMAN01", -127)
benutzt werden, damit der Spieler "SpAlias" auf den Attack-Befehl reagiert.



Vielleicht liegt es ja daran. Der CG muss eine zweite Attacke starten. Die Bedingung ist ja immer noch erfüllt, somit wird der Befehl erneut aufgerufen.



Probier das mal aus...

INITBLOCK()
{
SET_DIPLOMACY("CG01","HUMAN", 0);
SET_DIPLOMACY("CG02","HUMAN", 0);
SET_DIPLOMACY("CG01","CG02", 0);
SET TEST = FALSE;
}
IF TEST == FALSE && PLAYER "CG01" INHABITANTCOUNT "PIONIER" > 10 THEN
{
TEST = TRUE;
MINIMAP_ALERT(250, 250);
SET_DIPLOMACY("CG01","HUMAN", -127);
SET_DIPLOMACY("CG02","HUMAN", -127);
SET_DIPLOMACY("CG01","CG02", -127);
ATTACK_AREA ( "CG01", "CG02S" );
}


Unter Signals, dann bitte noch Test = FALSE

Probier mal ob das klappt.

HeyHey91

Ausguck

  • »HeyHey91« ist der Autor dieses Themas

Beiträge: 62

Registrierungsdatum: 21. August 2013

  • Nachricht senden

4

Montag, 2. September 2013, 22:02

habs getestet, Signal "TEST" wurde eingetragen und auf false gesetzt.

Dadurch wird zwar das im Intblock aufgerufen, die untere Bedingungen scheinbar aber nie. (keine Fahne und keine Kriegserklärungen und etc)

Selbes passiert beispielsweise auch, wenn man den Attackbefehl direkt für die Städte verwendet.

5

Dienstag, 3. September 2013, 00:29

Ja, glaube ich dir, habe eben auch kurz probiert.

annokrat meinte vor ewigen Zeiten, dass die Attack Befehle alle defekt seien. Ich habe es seinerzeit so als wahr hingenommen, da er extrem viel Skripterfahrung hat und habe nach seinem Hinweis nicht allzuviel mit den Attack Befehlen probiert und andere Spielereien gebastelt.
Ich wunderte mich dass dein Angriff überhaupt startete, daher mein Versuch.
Wie sich dieses "defekt" auswirkt weiß wohl nur er. Ob er damit diesen Absturz meint, oder etwas anderes kann ich nicht sagen. Meine Skriptkenntnisse sind ohnehin mehr als bescheiden.

Er hat die Annozone verlassen und eine eigene Website erstellt und hilft den einen oder anderen. Ich schlage dir allerdings vor dass du deine Spielerliste überarbeitest bevor du dich bei dem meldest.
Er guckt nur hin und wieder dort rein, lass dir Zeit!
http://anno1503.freeforums.org/

Oder versuche deine eigene Lösung zu finden, leider haben wir ja keine Dokumentation sondern lernten alle durch try and error. :unschuldig: Ich war dabei mehrfach der Tobsucht nahe.

HeyHey91

Ausguck

  • »HeyHey91« ist der Autor dieses Themas

Beiträge: 62

Registrierungsdatum: 21. August 2013

  • Nachricht senden

6

Dienstag, 3. September 2013, 14:24

kleiner Nachtrag

Der Absturz des Spieles hat überhaupt nix mit den Attackbefehlen zu tun, das passiert auch einfach so.

Der Computergegner braucht aber scheinbar ohne Attackbefehl etwas länger um Truppen abzusetzen, beziehungsweise eine Stelle zu finden. (beide sind auf Typ 7, Kampftyp 15 (von 11 auf 15) gestellt, ehemals Typus Rücksichtlos)

Interessanterweise hatte ich bisher kein Absturz, wenn ich selber einen Kontor auf der Insel errichtet hab.

FelixA

Insel-Eroberer

Beiträge: 424

Registrierungsdatum: 14. Januar 2010

  • Nachricht senden

7

Mittwoch, 4. September 2013, 18:13

Ich meine mich zu erinnern, das die CG auf Kampftyp 13 am stärksten sind, oder irre ich mich da(da waren irgendwie so Fehler bei 14 und 15, oder?)
  Die Weiten des Universums sind so unergründlich wie der menschliche Verstand!
_____________________________
Felix
ANNO 2071 M.A.UG.-Chefprogrammierer

HeyHey91

Ausguck

  • »HeyHey91« ist der Autor dieses Themas

Beiträge: 62

Registrierungsdatum: 21. August 2013

  • Nachricht senden

8

Dienstag, 10. September 2013, 14:33

Setconstruction_Drawstate

Hallo,

ich wollte den Befehl SETCONSTRUCTION_DRAWSTATE benutzen, um einen CG (CG03) daran zu hindern, Pioniere aufzubauen.
Im Editor selber wird auch angezeigt, dass die Pionierhäuser gesperrt sind, im Spiel selber, baut der CG03 aber trotzdem munter seine Pionierhäuser auf. CG03 ist auch die korrekte Bezeichnung, laut dem Editor. Selbes Verhalten tritt bei allen anderen auch auf.

Bsp: SETCONSTRUCTION_DRAWSTATE( "CG03", "0513", FALSE );
oder
SETCONSTRUCTION_DRAWSTATE( "CG03", "513", FALSE );

Die Inseln sind bereits von ihm besiedelt, aber nur mit Produktionsbetrieben und Farmen.


Viele Grüße

HeyHey

Admiral Drake

Schatzjäger

Beiträge: 2 696

Registrierungsdatum: 3. November 2004

  • Nachricht senden

9

Dienstag, 10. September 2013, 18:16

Ich habe so etwas noch nicht probiert, aber es gibt mehrere Pionierhäuser, die unterschiedliche Nummern haben.
Au0erdem gibt es den freeze-Befehl, schau mal, ob der dir weiterhilft.
  Nur wer nichts tut, macht auch keine Fehler. Nicht meckern, sondern anpacken !

10

Dienstag, 10. September 2013, 18:39

Quelle AnlagenListe (Map Editor)
501,Pioniere01\PionierHaus01_01.tga,L
503,Pioniere01\PionierHaus06_01.tga,L
505,Pioniere01\Haus03_01.tga,L
507,Pioniere01\PionierHaus04_01.tga,L
509,Pioniere01\PionierHaus05_01.tga,L
511,Pioniere01\Pionier02_01.tga,L
513,Pioniere01\Pionier01_01.tga,L

520,Siedler01\SiedlerHaus04_01.tga,L
521,Siedler01\SiedlerHaus05_01.tga,L
522,Siedler01\SiedlerHaus06_01.tga,L
523,Siedler01\Haus08_01.tga,L
524,Siedler01\Siedlerhaus09_01.tga,L
525,Siedler01\SiedlerNeu01_01.tga,L
526,Siedler01\Siedler02_01.tga,L


Ich kann mir denken dass der CG das mißachtet. Der Freeze Befehl könnte was einbringen.


Insofern du es erreichen willst, dass dort nur produziert wird und dir der CG im Grunde nicht wichtig ist, dann probiere mal aus, was passiert wenn du die Inseln dem Dummyplayer gibst. Teste dann aber auch aus, was passiert, wenn dir der Dummyplayer den Krieg erklärt. Nicht dass es dann abstürzt.
Den CG könntest du auf inaktiv stellen und ihm die Stadt bei einer bestimmten Bedingung und der aktiv Schaltung des CG übergeben. Stichwort Assign Befehle, (siehe meine Contests) Städte dürfen jedoch per Skript nur ein Mal übergeben werden.

HeyHey91

Ausguck

  • »HeyHey91« ist der Autor dieses Themas

Beiträge: 62

Registrierungsdatum: 21. August 2013

  • Nachricht senden

11

Dienstag, 10. September 2013, 20:56

Tatsache, die Sachen werden von den CGs einfach umgangen.
Ich hab natürlich alle von 501 bis 513 genommen, mit Kontoren funktiniert das auch nicht.

Der Freeze Befehl hat bei mir auch nicht funktioniert, kann das am Object_Stadt liegen.

Die Stadt heißt "Wasslingen" und ist auf der Insel 18, also müsste, wenn ich das richtig gelesen hab, die Stadt ID auch die 18 sein?

oder kann das garnicht damit zusammen hängen?

Ich habs auch schon Eingaben mit den direkten Namen gesehen, aber des is ja immer irgendwie leichtes Glücksspiel :)

Grüße

HeyHey

12

Dienstag, 10. September 2013, 21:55

Zitat

Die Stadt heißt "Wasslingen" und ist auf der Insel 18, also müsste, wenn ich das richtig gelesen hab, die Stadt ID auch die 18 sein?



Nein, falsch! Das was du dort im Editor ausliest ist keinesfalls die interne InselID.

Die Insel Nummer 1 hat die ID 0
Die Insel Nummer 2 hat die ID 1


Die Stadt Wasslingen hat somit die Nummer 17! Insofern es die zweite Stadt auf der Insel ist hat sie sogar (17 + 256) die Nummer 273!

Zitat

Ich habs auch schon Eingaben mit den direkten Namen gesehen, aber des is ja immer irgendwie leichtes Glücksspiel



Nein, trifft nicht zu.

Die Stadtnamen welche im Game angezeigt werden, werden wie bereits anderswo erwähnt nicht erkannt, lediglich der Code den du in Object define eingibst.


Beispiel

Ins Object_Define

OBJECT_STADT "TEST" 17



Danach im Script_Kernel :

FREEZE_CITY( "TEST" );

HeyHey91

Ausguck

  • »HeyHey91« ist der Autor dieses Themas

Beiträge: 62

Registrierungsdatum: 21. August 2013

  • Nachricht senden

13

Donnerstag, 19. September 2013, 11:56

FreezeCity scheint zu funktionieren :)
Jetzt hab ichs endlich mal hingekriegt mit Hilfe von Venezianern und dem Skript die CGs soweit zu kriegen, dass sie von sich aus doch häufig Aristrokraten entwickeln (Venesig KZA Mod).
Dies führt allerdings auch dazu, dass die nur noch alles einkaufen und nur auf ihrer eigenen Insel Sachen anbauen.
Soll ich versuchen die einkaufbare Menge zu begrenzen und das Geld der CGs einschränken?
Denkt ihr des erhöht die Chancen, dass sie von ihrer Bequemlichkeit abrücken?

Grüße HeyHey

Admiral Drake

Schatzjäger

Beiträge: 2 696

Registrierungsdatum: 3. November 2004

  • Nachricht senden

14

Donnerstag, 19. September 2013, 12:59

Was möchtest du denn eigentlich erreichen ?
Bedenke, dass CGs grundsätzlich auch "mogeln" - Geld dürfte sie nicht sonderlich interessieren ...
  Nur wer nichts tut, macht auch keine Fehler. Nicht meckern, sondern anpacken !

HeyHey91

Ausguck

  • »HeyHey91« ist der Autor dieses Themas

Beiträge: 62

Registrierungsdatum: 21. August 2013

  • Nachricht senden

15

Donnerstag, 19. September 2013, 13:08

Das Zielnwar ursprünglich dem Computer automatisch so zu helfen, dass die Entwicklung nicht so stagniert.
Allerdings sollte der Rest halt auch normal weiterverlaufen, also so, dass der Computer schon auch mal Tabak oder Seide auf einer 2. oder 3.Insel anbaut. Müssen ja nicht alle sein, aber wenigstens einer sollte schon mal die 40 Inseln nutzen :)
Jetzz seitdem ich an der Venezianer-Insel vieles anbiete, kauft der Computer da nur noch ein.

Admiral Drake

Schatzjäger

Beiträge: 2 696

Registrierungsdatum: 3. November 2004

  • Nachricht senden

16

Donnerstag, 19. September 2013, 13:40

Dann biete doch einfach keinen Tabak und keine Gewürze an ...
Außerdem nutzt der CG ohnehin in der Regel nur jeweils eine Tabak- und Gewürzinsel.

Aber es ist doch schonmal ein schönes Ergebnis, dass sich Aris beim CG entwickeln.
  Nur wer nichts tut, macht auch keine Fehler. Nicht meckern, sondern anpacken !

HeyHey91

Ausguck

  • »HeyHey91« ist der Autor dieses Themas

Beiträge: 62

Registrierungsdatum: 21. August 2013

  • Nachricht senden

17

Samstag, 21. September 2013, 05:59

jap, geld interessiert die KI nicht, bis auf das, dass sie wohl obs zufall oder nicht is, lieber selber Waren anbaut, wenn das Geld knapper ist.
Ebenso bauen die Computerspieler immernooch selber Waren an, wenn sie auf einmal weniger als 50T einkaufen.
Seltsam alles xD

Leif Erickson

Boardsmutje

Beiträge: 938

Registrierungsdatum: 2. September 2009

  • Nachricht senden

18

Dienstag, 5. November 2013, 21:25

Hi,

ich weiß nicht, ob das für euch noch aktuell ist, aber bei der IF Abfrage da unten wundert mich nicht, wenn niemand angreift:

INITBLOCK()
...
IF TEST == FALSE && PLAYER "CG01" INHABITANTCOUNT "PIONIER" > 10 THEN
{
...
}


Die booleschen Operatoren wie && (AND), == oder > haben eine Rangfolge der Abarbeitung. Der && Operatir dürfte vor den Vergleichoperatoren == und > abgearbeitet werden. Und dann kommt irgendwas raus, aber nicht das erwartete Ergebnis.
Mit Klammern könnt ihr die Rangfolge beeinflussen. Damit angegriffen wird, wenn Test=FALSE ist und nur, wenn der Gegner CG01 mehr als 10 Pios hat, muss das so ausseen:

IF (TEST == FALSE) && (PLAYER "CG01" INHABITANTCOUNT "PIONIER" > 10) THEN

Probiert mal.

Gruß
Leif E.
  Ich! Werde! Nicht! Singen!

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Leif Erickson« (6. November 2013, 08:55)