You are not logged in.

Dear visitor, welcome to AnnoZone Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

HeyHey91

Ausguck

  • "HeyHey91" started this thread

Posts: 62

Date of registration: Aug 21st 2013

  • Send private message

1

Sunday, February 16th 2014, 3:49pm

Player Sold und Bought, Tributabfrage, ich komme nicht drauf, was falsch läuft?

Hallo Anno Experten,

ich bastle zur Zeit wieder an einem kleinen Szenario.
Dieses mal wollte ich eine IF-Abfrage für Tribute bei Piraten und Player Sold, Bought bei Venezianer, Völker und Piraten verwenden.

Die Abfrage für den Tribut bei den Piraten ist aber von Spielbeginn an immer positiv, auch, wenn ich noch nichts gezahlt habe.
Das Bezahlen des Tributs ändert dann auch nichts mehr.

Die Abfrage auf Waren gekauft und verkauft funktioniert irgendwie überhaupt nicht. Das Script läuft zwar, erkennt, aber nichts.

Ich verstehe einfach nicht, was ich falsch mache, laut Scriptbuch und Manual müsste es richtig sein.
Ich habe auch mal das Szenario File angehängt.


Viele Grüße

HeyHey

Das Script:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
INITBLOCK()
{
TIMER_SET(1, 0);
TIMER_START(1);
}
SET MAURSOLD = FALSE;
SET PIRBUY = FALSE;
SET VNBUY = FALSE;
SET TRIBU = FALSE;
SET BEGIN = FALSE;

IF ( (BEGIN == FALSE) && (TIMER_1 == 4) ) THEN
{
SETTRIBUTE( "PIRATEN01",  "HUMAN01", 10000 , "CLEAR", 0, "CLEAR", 0);
BEGIN = TRUE;
}
IF ( (PIRBUY == FALSE) && (PLAYER "HUMAN01" BOUGHT "PIRATEN01@ALKOHOL" > 5 ) ) THEN 
{
MINIMAP_ALERT(250,250);
PIRBUY = TRUE;
}
IF ( (VNBUY == FALSE) && (PLAYER "HUMAN01" BOUGHT "HAENDLER1@WERKZEUG" > 5 ) ) THEN 
{
MONEY_SET("HUMAN01", 200000);
VNBUY = TRUE;
}
IF ( (TRIBU == FALSE) && (PLAYER "HUMAN01" PAID_TRIBUTE_TO "PIRATEN01" ) ) THEN
{
MONEY_SET("HUMAN01", 300000);
TRIBU = TRUE;
}
IF ( (MAURSOLD == FALSE) && (PLAYER "MAUREN01" SOLD "HUMAN01@EDELSTEINE" > 2 ) ) THEN
{
MONEY_SET("HUMAN01", 400000);
MAURSOLD = TRUE;
}
IF (TIMER_1 == 60) THEN
{
MONEY_SET("HUMAN01", 100000);
TIMER_SET(1, 0);
}



Die Player Definition:

Source code

1
2
3
4
5
"HUMAN01" 0
"PIRATEN01" 1
"HAENDLER1" 2
"MAUREN01" 3
"DUMMYPLAYER" 31
HeyHey91 has attached the following file:
  • Szenario.zip (48.26 kB - 148 times downloaded - latest: May 3rd 2024, 9:16am)

HeyHey91

Ausguck

  • "HeyHey91" started this thread

Posts: 62

Date of registration: Aug 21st 2013

  • Send private message

2

Sunday, February 16th 2014, 7:27pm

das mit den Tributen scheint wohl doch nachträglich noch zu funktionieren, jedoch wird beim Start trotz allem zuerst einmal die Zeilen aufgerufen und ausgeführt:

Source code

1
2
3
4
5
IF ( (TRIBU == FALSE) && (PLAYER "HUMAN01" PAID_TRIBUTE_TO "PIRATEN01" ) ) THEN
{
MONEY_SET("HUMAN01", 300000);
TRIBU = TRUE;
}


Die Variable TRIBU wird beim Spielstart aber scheinbar nicht auf TRUE gesetzt, lediglich das Geld
steigt auf 300 000 Taler, sofort, und nicht erst nach 4 Sekunden, (wie es der Timer eigentlich vorgibt),
nachdem das Spiel begonnen wurde.

Die BOUGHT und SOLD Abfragen funktionieren aber so wies aussieht garnicht :( und werden irgendwie so übergangen, der letzte Befehl Timer zurücksetzen und Geld auf 100 000 Taler funktioniert weiterhin

This post has been edited 2 times, last edit by "HeyHey91" (Feb 17th 2014, 2:57am)


HeyHey91

Ausguck

  • "HeyHey91" started this thread

Posts: 62

Date of registration: Aug 21st 2013

  • Send private message

3

Monday, February 17th 2014, 2:57am

SOLD und BOUGHT für mich ok, aber die Sache mit dem Tribut ist nach wie vor seltsam

EDIT: Problem mit SOLD und BOUGHT ist für mich zufriedenstellend, ich hab nicht daran gedacht, SETWARELOG zu verwenden, auch, wenns bei mir nur mit SOLD funktioniert, aber damit kann ich leben.

Ich begreife aber einfach nicht, wieso das Script trotz allem immer in die IF Abfrage mit dem Tribut reingeht, die Variable nicht setzt und das Geld in Sekunde 0+ auf 300 000 geht.
Eingestellt als Startgeld waren immer 20 000.

HeyHey91

Ausguck

  • "HeyHey91" started this thread

Posts: 62

Date of registration: Aug 21st 2013

  • Send private message

4

Tuesday, February 18th 2014, 8:35pm

Problem gelöst

Ich hab die Logik nicht bedacht
Kann geschlossen werden