Laufzeiten berechnen

NetterOnkel

Gast
Hallo zusammen,

ich arbeite an einem Projekt, wo ich unteranderem die Laufzeitberechnung für benötige.

Nach etlichen versuchen über das Forum und Google eine passsende Hilfe bzw. Lösung zu finden komme ich nicht weiter. Ich habe zwar diesen Schnippsel hier und der leuchtet mir auch ein. Aber die Laufzeiten passen nicht.

Code:
function unit_time($x1, $x2, $y1, $y2, $speed=1) {
	return hypot($x1 - $x2, $y1 - $y2) * $speed;
}// function unit_time

Den Speed habe ich in der statischen Datei gefunden, aber er scheint nicht zu passen. Irgendwelche Ideen? Hilfestellungen?

Danke im Vorraus
 

Faark

Gast
A²+B²=C², so einfach ;)

Naja okay, nicht wirklich^^
Den Welt-Speed zu beachten ist vmtl noch recht simpel.
Dazu kommt noch ne Rüstzeit (15min auf Alpha, glaube Speed-Abhängig)
Außerdem ist es nicht einfach, die exakten Koordinaten zu bekommen. Die hängen nämlich vom InselTyp und Slot auf der Insel ab.
 

NetterOnkel

Gast
Die Mathematik hinter der ganzen Geschichte habe ich ja verstanden und den Abstand habe ich ja auch.

Es geht ja hier nicht um eine komplett genaue Zeitberechnung +/- 20min wären ja annehmbar, doch bei mir liegt er irgendwie komplett daneben.
 

pommesmitfritten

Gast
um das thema mal wieder aufzurollen...

Hallo,

Ich suche die Formel zur Berechnug der Laufzeiten in Omikron. Ich habe erst nach einem entsprechenden Skript gesucht, bin aber leider nicht fündig geworden!

Nun wollte ich mir halt eine Exceltabelle erstellen, in der meine Städte stehen und ich durch eingabe der Zielkoordinaten eine Laufzeit angezeigt bekomme.

Ich habe es durch den normalen Weg über die Formel v*t=s proviert, aber das ergibt ganz seltsame werte. Zumal ich vorher dacht, wenn ich es mit der Steigung einer linearen Fkt mache, also Abstand zweier Punkte in der Ebene, hätte ich einen vergleichbaren wert, aber leider fehlgeschlagen!

Meine Frage besteht nun darin, ob iwelche Faktoren eine Rolle spielen, wie umfahren einer Insel, unterschiedliche Maßeinheiten etc., wenn ja, welche.

MfG
pommesmitfritten
 

DeletedUser22699

Gast
Meine Frage besteht nun darin, ob iwelche Faktoren eine Rolle spielen, wie umfahren einer Insel, unterschiedliche Maßeinheiten etc., wenn ja, welche.
vielleicht der Faktor dass alle Städte auf einer Insel die gleiche Koordinaten haben

ich hab auf Speed 2 Welten von einem Ende der Insel zur anderen aber schon 30 bis 50 Minuten Laufzeit mit Feuerschiffen
wenn man dann mit deren Koordinaten rechnet wäre der Weg aber 0

und wenn man dann 2 Inseln hat sind die nahen Enden dieser dann 1 bis 1,5h näher beeinander als die entfernten (bei Speed 1 wären das dann bis zu 3 Stunden)
 
Zuletzt bearbeitet von einem Moderator:

Anfänger?

Gast
auch wenn der Threadersteller schon ein Jahr nicht mehr online war, ist es doch ein interressantes Thema, dass auch andere (ua mich) interressiert.
Die rRechnungen sind eigentlich wie schon festgestellt ganz einfach(Pythagors): In DS ist alles ganz einfach:
$ dist = hypot($x[0]-$x[1],$y[0]-$y[1]);
$ t = $dist*$speed/60

Eigentlich gilt ja: t=s/v, aber da bei DS v^-1 (min/Feld) angegeben wird muss man es umdrehen....

Jetzt das übertragen auf Grepolis:
1.Problem: Koordinaten: DS = Dorf(x|y);
Was sind die Koordinaten in Grepolis?
Errechenbar aus:
33271,652400,1.1-1.1-01+ANF%C3%84NGER,688,602,14,13031
aus
nur wie?
2. Problem: die Einheit von
2.1.vlt. Felder/Stunde
2.2.oder wie bei ds: min/Feld

ich weiß nicht wie genau es ist, aber beide obengenannten Sachen sind es nicht. Es muss etwas wie 2.1 sein (t^-1) und nicht wie 2.2, weil sonst das Katapult die schnellste Einheit wäre (...)
3.
Dazu kommt noch ne Rüstzeit (15min auf Alpha, glaube Speed-Abhängig)
weiß da jemand mehr?


Ich hab jetzt mal mit einer Stadt getestet und rausgefunden, dass es irgendwas mit t=s/v sein muss (ein schnelles Transp. läuft auflange Distanzen ~1000Felder ~1,5 mal so schnell wie ein FS)...


Vlt meldet sich hier ja mal einer der Wirklich weiß, wie das Berechnet wird, bzw der weiß wie es die externen Tools rechnen....
 

Faark

Gast
Ist zwar schon etwas her, dass ich mich mit dem Thema beschäftigt habe aber afaik ist es schon wie bei DS, wird über nen Pythagoras und mit Geschwindigkeit gerechnet. Nur wie bereits erwähnt gibt es ein paar Punkte die es etwas schwerer machen.

  • In Grepolis gibt es keine Dorf-Koordinaten. Nur Insel-Koordinaten. Um die der Dörfer zu bekommen muss man den "Offset" des Dorfes auf der Insel herausfinden. Dazu braucht man eine Liste aller Insel-Typen, deren Dorf-Slots (der Index des Dorfs auf der Insel in den Weltdaten zeigt welchen man nehmen muss) und deren "Positionen auf der Insel". Die zu ermitteln ist nicht ganz so einfach ;)
  • Diese "Rüstzeit", die auf jeden Angriff aufgerechnet wird. Afaik ist die Standardmäßig 15min/Serverspeed, was glaube aber beim erstellen der Welt frei festgelegt werden kann.
    Da bei ihr der Einheitenspeed aber keine Rolle spielt lässt sich die mit Hilfe eines Gleichungssystems und paar Werten (Laufzeiten zu 2 verschiedenen Dörfern von je 2 verschieden schnellen Einheiten) ausrechnen bzw dürfte unter 2.0 aus MapDuration.duration_offset (Sekunden) auslesen lassen.
 

Anfänger?

Gast
der Index des Dorfs auf der Insel in den Weltdaten zeigt welchen man nehmen muss
wenn ich das jetzt Richtig verstehe meinst du damit, den Typ der Insel.
Weißt du zufällig auch wie man den Bekommt (und dann noch die genauen Koordinaten errechnet? Bis auf die 2 Punkte ist es gar nicht kompliziert.
Was mich jetzt nur noch stört, dass ich für eine Strecke von ~530 Feldern mit FS "nur" 40h brauch, aber in Wirklichkeit (ausprobiert) beinahe 70h...
 

Anfänger?

Gast
nur das diese rohdaten paar fehler haben... das bei Städten passt alles nur bei den inseln gibt es nur 5 Werte, obwohl es 6 geben sollte.
$id, $x, $y, $island_x, $island_y, $available_towns
dann passen x|y überhaupt nicht zu denen der karte (oder muss man da die nicht verhandenen $island_x und $island_y nehmen? Zudem ist $available_towns immer 0 oder 20??
kleines BSP:
255150,666,720,3,0 beispiel ist aus W1 wahllos rausgegriffen...

Id: 255150
x:666
y:720
is_x:3
is_y=0
a_t:?

ich spiel nicht auf Alpha, denke aber die Werte sind müll....
Weiß jemand zufällig wer die sich um die Daten kümmert bzw. wer die wiki einträge dazu schreibt?
 

Faark

Gast
Jap, die Beschreibung war falsch. Es handelt sich um id,x,y,insel_type_nummber,slots.
Ist gefixt. Der Wiki-Eintrag wurde von freiwilligen aus Foren und Co zusammen getragen.

Welche Insel welchen Typ hat erfährst du von da. Aber die eigentlichen Infos über die Inseltypen (Dorfslot-Positionen) muss man sich direkt aus dem Spiel holen, zumindest ist mir keine andere Möglichkeit bekannt.
 

Anfänger?

Gast
Aber die eigentlichen Infos über die Inseltypen (Dorfslot-Positionen) muss man sich direkt aus dem Spiel holen, zumindest ist mir keine andere Möglichkeit bekannt.

Gibts da irgendwie ne Möglich keit das rauszumessen? mich hat bis jetzt eigentlich eher nur die Theorie interressiert, aber irgendwie will ich jetzt sowas schreiben^^.
Sry, aber ich hab da erst gerade angefangen und hab net sehr viel ahnung von solchen sachen....
 

Faark

Gast
Naja, Pixel ausmessen :D

Es gibt ja die "freie" Laufzeit-Vorschau, wenn man in v2 auf ein Einheiten-Typ klickt. Die funktioniert über die Pixel-Entfernung:
Code:
		var delta_x = mouse_pixel_coordinate.x - this.town_position.x_px;
		var delta_y = mouse_pixel_coordinate.y - this.town_position.y_px;
		var distance = Math.round(Math.sqrt(Math.pow(delta_x, 2) + Math.pow(delta_y, 2)) * 10) / 10;
		var speed = MapDuration.speed;
		var duration_readable;
		if (speed > 0) {
			var duration_seconds = Math.round((distance * 50) / speed);
			duration_seconds += MapDuration.duration_offset;
			duration_readable = readableSeconds(duration_seconds);
			this.elm.duration[0].innerHTML = '~ ' + duration_readable;
		}

Auch in den zu den Insel verfügbaren Daten (besser gesagt zu den der Dörfer) sind nur Pixel-Offsets enthalten. Das wird also schon etwa darüber laufen. Hab alle derzeit verfügbaren Infos zu den aktuellen Inseltypen mal rausgesucht:
Code:
Inseltypen = {
	1: {
		width: 8,
		height: 5,
		img: "island1.png",
		centering_offset_x: 12,
		centering_offset_y: 25,
		slots: {
			0: { x: 451, y: 130 },
			1: { x: 351, y: 168 },
			2: { x: 261, y: 230 },
			3: { x: 193, y: 268 },
			4: { x: 201, y: 317 },
			5: { x: 220, y: 396 },
			6: { x: 290, y: 393 },
			7: { x: 364, y: 401 },
			8: { x: 453, y: 459 },
			9: { x: 519, y: 498 },
			10: { x: 601, y: 463 },
			11: { x: 682, y: 462 },
			12: { x: 752, y: 441 },
			13: { x: 827, y: 410 },
			14: { x: 886, y: 347 },
			15: { x: 857, y: 289 },
			16: { x: 812, y: 202 },
			17: { x: 728, y: 226 },
			18: { x: 780, y: 283 },
			19: { x: 751, y: 319 }
		}
	},
	2: {
		width: 7,
		height: 5,
		img: "island2.png",
		centering_offset_x: -12,
		centering_offset_y: -25,
		slots: {
			0: { x: 321, y: 183 },
			1: { x: 326, y: 103 },
			2: { x: 407, y: 98 },
			3: { x: 510, y: 68 },
			4: { x: 619, y: 75 },
			5: { x: 687, y: 100 },
			6: { x: 750, y: 130 },
			7: { x: 794, y: 165 },
			8: { x: 774, y: 229 },
			9: { x: 740, y: 297 },
			10: { x: 734, y: 366 },
			11: { x: 681, y: 387 },
			12: { x: 550, y: 410 },
			13: { x: 480, y: 408 },
			14: { x: 314, y: 393 },
			15: { x: 216, y: 387 },
			16: { x: 195, y: 323 },
			17: { x: 122, y: 300 },
			18: { x: 115, y: 216 },
			19: { x: 190, y: 178 }
		}
	},
	3: {
		width: 8,
		height: 4,
		img: "island3.png",
		centering_offset_x: -21.5,
		centering_offset_y: 0,
		slots: {
			0: { x: 485, y: 79 },
			1: { x: 400, y: 63 },
			2: { x: 340, y: 88 },
			3: { x: 283, y: 108 },
			4: { x: 238, y: 144 },
			5: { x: 152, y: 208 },
			6: { x: 141, y: 310 },
			7: { x: 214, y: 353 },
			8: { x: 298, y: 391 },
			9: { x: 359, y: 408 },
			10: { x: 403, y: 432 },
			11: { x: 481, y: 454 },
			12: { x: 568, y: 435 },
			13: { x: 607, y: 377 },
			14: { x: 737, y: 385 },
			15: { x: 709, y: 342 },
			16: { x: 858, y: 247 },
			17: { x: 847, y: 185 },
			18: { x: 776, y: 145 },
			19: { x: 693, y: 96 }
		}
	},
	4: {
		width: 6,
		height: 3,
		img: "island4.png",
		centering_offset_x: 30,
		centering_offset_y: -50,
		slots: {
			0: { x: 527, y: 114 },
			1: { x: 584, y: 131 },
			2: { x: 690, y: 150 },
			3: { x: 738, y: 185 },
			4: { x: 780, y: 207 },
			5: { x: 682, y: 244 },
			6: { x: 623, y: 273 },
			7: { x: 525, y: 282 },
			8: { x: 488, y: 240 },
			9: { x: 406, y: 202 },
			10: { x: 324, y: 203 },
			11: { x: 238, y: 230 },
			12: { x: 262, y: 277 },
			13: { x: 273, y: 318 },
			14: { x: 204, y: 351 },
			15: { x: 111, y: 336 },
			16: { x: 100, y: 262 },
			17: { x: 140, y: 200 },
			18: { x: 244, y: 163 },
			19: { x: 332, y: 130 }
		}
	},
	5: {
		width: 8,
		height: 4,
		img: "island5.png",
		centering_offset_x: 5,
		centering_offset_y: null,
		slots: {
			0: { x: 214, y: 204 },
			1: { x: 235, y: 127 },
			2: { x: 325, y: 79 },
			3: { x: 404, y: 54 },
			4: { x: 518, y: 70 },
			5: { x: 536, y: 122 },
			6: { x: 638, y: 125 },
			7: { x: 731, y: 125 },
			8: { x: 746, y: 176 },
			9: { x: 838, y: 200 },
			10: { x: 848, y: 252 },
			11: { x: 789, y: 326 },
			12: { x: 739, y: 363 },
			13: { x: 650, y: 393 },
			14: { x: 559, y: 418 },
			15: { x: 434, y: 465 },
			16: { x: 320, y: 417 },
			17: { x: 275, y: 373 },
			18: { x: 625, y: 308 },
			19: { x: 620, y: 240 }
		}
	},
	6: {
		width: 7,
		height: 4,
		img: "island6.png",
		centering_offset_x: 14.5,
		centering_offset_y: 30,
		slots: {
			0: { x: 467, y: 373 },
			1: { x: 551, y: 424 },
			2: { x: 676, y: 457 },
			3: { x: 770, y: 463 },
			4: { x: 826, y: 434 },
			5: { x: 826, y: 354 },
			6: { x: 770, y: 320 },
			7: { x: 708, y: 299 },
			8: { x: 640, y: 208 },
			9: { x: 589, y: 181 },
			10: { x: 504, y: 143 },
			11: { x: 416, y: 145 },
			12: { x: 343, y: 163 },
			13: { x: 271, y: 175 },
			14: { x: 174, y: 231 },
			15: { x: 95, y: 293 },
			16: { x: 149, y: 327 },
			17: { x: 188, y: 365 },
			18: { x: 167, y: 417 },
			19: { x: 267, y: 442 }
		}
	},
	7: {
		width: 5,
		height: 4,
		img: "island7.png",
		centering_offset_x: -34.5,
		centering_offset_y: 20,
		slots: {
			0: { x: 153, y: 237 },
			1: { x: 128, y: 214 },
			2: { x: 112, y: 160 },
			3: { x: 119, y: 114 },
			4: { x: 173, y: 93 },
			5: { x: 226, y: 115 },
			6: { x: 323, y: 148 },
			7: { x: 380, y: 171 },
			8: { x: 508, y: 187 },
			9: { x: 447, y: 213 },
			10: { x: 475, y: 265 },
			11: { x: 507, y: 310 },
			12: { x: 502, y: 359 },
			13: { x: 438, y: 389 },
			14: { x: 433, y: 456 },
			15: { x: 370, y: 446 },
			16: { x: 291, y: 427 },
			17: { x: 220, y: 450 },
			18: { x: 174, y: 419 },
			19: { x: 124, y: 394 }
		}
	},
	8: {
		width: 6,
		height: 4,
		img: "island8.png",
		centering_offset_x: 13,
		centering_offset_y: null,
		slots: {
			0: { x: 578, y: 245 },
			1: { x: 638, y: 270 },
			2: { x: 700, y: 290 },
			3: { x: 735, y: 335 },
			4: { x: 693, y: 363 },
			5: { x: 648, y: 390 },
			6: { x: 584, y: 412 },
			7: { x: 469, y: 440 },
			8: { x: 402, y: 440 },
			9: { x: 284, y: 417 },
			10: { x: 224, y: 389 },
			11: { x: 176, y: 332 },
			12: { x: 134, y: 306 },
			13: { x: 134, y: 261 },
			14: { x: 100, y: 213 },
			15: { x: 127, y: 166 },
			16: { x: 176, y: 143 },
			17: { x: 234, y: 124 },
			18: { x: 303, y: 123 },
			19: { x: 338, y: 159 }
		}
	},
	9: {
		width: 7,
		height: 4,
		img: "island9.png",
		centering_offset_x: 15.5,
		centering_offset_y: -10,
		slots: {
			0: { x: 178, y: 321 },
			1: { x: 106, y: 282 },
			2: { x: 131, y: 220 },
			3: { x: 182, y: 163 },
			4: { x: 358, y: 72 },
			5: { x: 416, y: 46 },
			6: { x: 513, y: 59 },
			7: { x: 587, y: 116 },
			8: { x: 820, y: 189 },
			9: { x: 857, y: 230 },
			10: { x: 833, y: 319 },
			11: { x: 713, y: 390 },
			12: { x: 652, y: 425 },
			13: { x: 613, y: 362 },
			14: { x: 527, y: 397 },
			15: { x: 524, y: 449 },
			16: { x: 423, y: 447 },
			17: { x: 362, y: 442 },
			18: { x: 348, y: 395 },
			19: { x: 327, y: 366 }
		}
	},
	10: {
		width: 7,
		height: 4,
		img: "island10.png",
		centering_offset_x: 10.5,
		centering_offset_y: 0,
		slots: {
			0: { x: 553, y: 137 },
			1: { x: 606, y: 103 },
			2: { x: 700, y: 110 },
			3: { x: 748, y: 153 },
			4: { x: 814, y: 221 },
			5: { x: 799, y: 319 },
			6: { x: 747, y: 357 },
			7: { x: 676, y: 391 },
			8: { x: 492, y: 421 },
			9: { x: 411, y: 440 },
			10: { x: 314, y: 415 },
			11: { x: 249, y: 378 },
			12: { x: 194, y: 355 },
			13: { x: 128, y: 288 },
			14: { x: 155, y: 179 },
			15: { x: 233, y: 118 },
			16: { x: 332, y: 106 },
			17: { x: 369, y: 145 },
			18: { x: 348, y: 192 },
			19: { x: 259, y: 200 }
		}
	},
	11: {
		width: 4,
		height: 2,
		img: "uninhabited1.png",
		centering_offset_x: 0,
		centering_offset_y: 0,
		slots: {
			0: { x: 119, y: 119 },
			1: { x: 190, y: 76 },
			2: { x: 273, y: 79 },
			3: { x: 395, y: 145 },
			4: { x: 425, y: 233 },
			5: { x: 312, y: 172 },
			6: { x: 259, y: 126 }
		}
	},
	12: {
		width: 3,
		height: 2,
		img: "uninhabited2.png",
		centering_offset_x: 0,
		centering_offset_y: 0,
		slots: {
			0: { x: 185, y: 67 },
			1: { x: 274, y: 89 },
			2: { x: 321, y: 192 },
			3: { x: 263, y: 207 },
			4: { x: 192, y: 226 },
			5: { x: 119, y: 205 },
			6: { x: 153, y: 146 }
		}
	},
	13: {
		width: 5,
		height: 4,
		img: "uninhabited3.png",
		centering_offset_x: 0,
		centering_offset_y: 0,
		slots: {
			0: { x: 383, y: 0 },
			1: { x: 374, y: 146 },
			2: { x: 550, y: 289 },
			3: { x: 466, y: 299 },
			4: { x: 420, y: 277 },
			5: { x: 336, y: 300 },
			6: { x: 231, y: 264 },
			7: { x: 184, y: 235 },
			8: { x: 206, y: 138 },
			9: { x: 206, y: 46 },
			10: { x: 292, y: 31 }
		}
	},
	14: {
		width: 3,
		height: 2,
		img: "uninhabited4.png",
		centering_offset_x: 0,
		centering_offset_y: 0,
		slots: {
			0: { x: 210, y: 69 },
			1: { x: 301, y: 81 },
			2: { x: 303, y: 138 },
			3: { x: 259, y: 159 },
			4: { x: 248, y: 240 },
			5: { x: 146, y: 238 },
			6: { x: 75, y: 203 }
		}
	},
	15: {
		width: 4,
		height: 3,
		img: "uninhabited5.png",
		centering_offset_x: 0,
		centering_offset_y: 0,
		slots: {
			0: { x: 119, y: 87 },
			1: { x: 244, y: 95 },
			2: { x: 265, y: 129 },
			3: { x: 377, y: 132 },
			4: { x: 431, y: 163 },
			5: { x: 490, y: 206 },
			6: { x: 397, y: 260 },
			7: { x: 325, y: 273 }
		}
	},
	16: {
		width: 5,
		height: 4,
		img: "uninhabited6.png",
		centering_offset_x: 0,
		centering_offset_y: 0,
		slots: {
			0: { x: 123, y: 111 },
			1: { x: 209, y: 106 },
			2: { x: 301, y: 118 },
			3: { x: 348, y: 171 },
			4: { x: 446, y: 203 },
			5: { x: 552, y: 218 },
			6: { x: 606, y: 244 },
			7: { x: 593, y: 306 },
			8: { x: 503, y: 321 },
			9: { x: 343, y: 297 },
			10: { x: 227, y: 270 },
			11: { x: 175, y: 212 },
			12: { x: 119, y: 184 }
		}
	},
 

Faark

Gast
Code:
	37: {
		width: 8,
		height: 5,
		img: "island11.png",
		centering_offset_x: -7,
		centering_offset_y: 27,
		slots: {
			0: { x: 485, y: 120 },
			1: { x: 400, y: 130 },
			2: { x: 432, y: 190 },
			3: { x: 585, y: 292 },
			4: { x: 550, y: 350 },
			5: { x: 370, y: 220 },
			6: { x: 288, y: 193 },
			7: { x: 192, y: 240 },
			8: { x: 141, y: 300 },
			9: { x: 175, y: 353 },
			10: { x: 243, y: 411 },
			11: { x: 375, y: 445 },
			12: { x: 530, y: 490 },
			13: { x: 640, y: 500 },
			14: { x: 690, y: 470 },
			15: { x: 775, y: 450 },
			16: { x: 858, y: 367 },
			17: { x: 847, y: 245 },
			18: { x: 776, y: 200 },
			19: { x: 693, y: 159 }
		}
	},
	38: {
		width: 7,
		height: 4,
		img: "island12.png",
		centering_offset_x: -21,
		centering_offset_y: -12,
		slots: {
			0: { x: 350, y: 75 },
			1: { x: 250, y: 50 },
			2: { x: 170, y: 84 },
			3: { x: 108, y: 142 },
			4: { x: 81, y: 189 },
			5: { x: 89, y: 238 },
			6: { x: 105, y: 288 },
			7: { x: 217, y: 313 },
			8: { x: 301, y: 365 },
			9: { x: 375, y: 378 },
			10: { x: 445, y: 380 },
			11: { x: 525, y: 376 },
			12: { x: 588, y: 375 },
			13: { x: 663, y: 344 },
			14: { x: 757, y: 305 },
			15: { x: 679, y: 218 },
			16: { x: 798, y: 195 },
			17: { x: 740, y: 105 },
			18: { x: 636, y: 65 },
			19: { x: 530, y: 45 }
		}
	},
	39: {
		width: 7,
		height: 4,
		img: "island13.png",
		centering_offset_x: 25,
		centering_offset_y: 10,
		slots: {
			0: { x: 517, y: 53 },
			1: { x: 430, y: 80 },
			2: { x: 266, y: 115 },
			3: { x: 187, y: 185 },
			4: { x: 111, y: 248 },
			5: { x: 107, y: 310 },
			6: { x: 189, y: 363 },
			7: { x: 253, y: 405 },
			8: { x: 344, y: 419 },
			9: { x: 424, y: 387 },
			10: { x: 502, y: 387 },
			11: { x: 650, y: 411 },
			12: { x: 711, y: 380 },
			13: { x: 816, y: 343 },
			14: { x: 874, y: 256 },
			15: { x: 691, y: 240 },
			16: { x: 636, y: 211 },
			17: { x: 701, y: 194 },
			18: { x: 652, y: 102 },
			19: { x: 585, y: 62 }
		}
	},
	40: {
		width: 7,
		height: 4,
		img: "island14.png",
		centering_offset_x: 17,
		centering_offset_y: 16,
		slots: {
			0: { x: 389, y: 94 },
			1: { x: 344, y: 151 },
			2: { x: 339, y: 210 },
			3: { x: 163, y: 235 },
			4: { x: 94, y: 284 },
			5: { x: 133, y: 339 },
			6: { x: 191, y: 364 },
			7: { x: 264, y: 395 },
			8: { x: 325, y: 428 },
			9: { x: 430, y: 406 },
			10: { x: 648, y: 433 },
			11: { x: 727, y: 394 },
			12: { x: 792, y: 350 },
			13: { x: 863, y: 303 },
			14: { x: 866, y: 263 },
			15: { x: 741, y: 244 },
			16: { x: 681, y: 222 },
			17: { x: 656, y: 142 },
			18: { x: 544, y: 127 },
			19: { x: 484, y: 84 }
		}
	},
	41: {
		width: 7,
		height: 4,
		img: "island15.png",
		centering_offset_x: 52,
		centering_offset_y: 27,
		slots: {
			0: { x: 444, y: 95 },
			1: { x: 357, y: 110 },
			2: { x: 248, y: 150 },
			3: { x: 166, y: 199 },
			4: { x: 148, y: 233 },
			5: { x: 143, y: 276 },
			6: { x: 158, y: 327 },
			7: { x: 194, y: 375 },
			8: { x: 264, y: 413 },
			9: { x: 315, y: 433 },
			10: { x: 448, y: 462 },
			11: { x: 584, y: 453 },
			12: { x: 738, y: 380 },
			13: { x: 798, y: 348 },
			14: { x: 867, y: 323 },
			15: { x: 881, y: 260 },
			16: { x: 772, y: 244 },
			17: { x: 657, y: 309 },
			18: { x: 623, y: 128 },
			19: { x: 525, y: 95 }
		}
	},
	42: {
		width: 7,
		height: 5,
		img: "island16.png",
		centering_offset_x: 7,
		centering_offset_y: 10,
		slots: {
			0: { x: 457, y: 85 },
			1: { x: 391, y: 95 },
			2: { x: 321, y: 130 },
			3: { x: 244, y: 154 },
			4: { x: 172, y: 210 },
			5: { x: 117, y: 302 },
			6: { x: 105, y: 338 },
			7: { x: 167, y: 367 },
			8: { x: 210, y: 471 },
			9: { x: 313, y: 486 },
			10: { x: 319, y: 375 },
			11: { x: 489, y: 407 },
			12: { x: 491, y: 453 },
			13: { x: 608, y: 446 },
			14: { x: 661, y: 413 },
			15: { x: 769, y: 367 },
			16: { x: 849, y: 265 },
			17: { x: 700, y: 156 },
			18: { x: 637, y: 123 },
			19: { x: 552, y: 96 }
		}
	},
	43: {
		width: 7,
		height: 4,
		img: "island17.png",
		centering_offset_x: -17,
		centering_offset_y: -25,
		slots: {
			0: { x: 305, y: 1 },
			1: { x: 250, y: 20 },
			2: { x: 191, y: 75 },
			3: { x: 85, y: 104 },
			4: { x: 91, y: 163 },
			5: { x: 121, y: 217 },
			6: { x: 101, y: 259 },
			7: { x: 180, y: 156 },
			8: { x: 656, y: 197 },
			9: { x: 303, y: 305 },
			10: { x: 361, y: 331 },
			11: { x: 442, y: 316 },
			12: { x: 551, y: 317 },
			13: { x: 646, y: 298 },
			14: { x: 706, y: 267 },
			15: { x: 768, y: 233 },
			16: { x: 741, y: 91 },
			17: { x: 689, y: 39 },
			18: { x: 528, y: 46 },
			19: { x: 448, y: 46 }
		}
	},
	44: {
		width: 7,
		height: 4,
		img: "island18.png",
		centering_offset_x: 55,
		centering_offset_y: -32,
		slots: {
			0: { x: 536, y: 11 },
			1: { x: 508, y: 53 },
			2: { x: 419, y: 42 },
			3: { x: 310, y: 36 },
			4: { x: 342, y: 101 },
			5: { x: 172, y: 129 },
			6: { x: 181, y: 204 },
			7: { x: 238, y: 277 },
			8: { x: 352, y: 301 },
			9: { x: 408, y: 354 },
			10: { x: 467, y: 257 },
			11: { x: 551, y: 249 },
			12: { x: 600, y: 364 },
			13: { x: 695, y: 331 },
			14: { x: 780, y: 299 },
			15: { x: 789, y: 218 },
			16: { x: 865, y: 175 },
			17: { x: 811, y: 116 },
			18: { x: 678, y: 85 },
			19: { x: 696, y: 29 }
		}
	},
	45: {
		width: 7,
		height: 4,
		img: "island19.png",
		centering_offset_x: -40,
		centering_offset_y: -21,
		slots: {
			0: { x: 352, y: 132 },
			1: { x: 301, y: 186 },
			2: { x: 169, y: 199 },
			3: { x: 191, y: 243 },
			4: { x: 270, y: 314 },
			5: { x: 188, y: 327 },
			6: { x: 115, y: 355 },
			7: { x: 101, y: 393 },
			8: { x: 163, y: 428 },
			9: { x: 276, y: 428 },
			10: { x: 421, y: 388 },
			11: { x: 458, y: 443 },
			12: { x: 603, y: 441 },
			13: { x: 675, y: 390 },
			14: { x: 736, y: 341 },
			15: { x: 750, y: 246 },
			16: { x: 650, y: 135 },
			17: { x: 583, y: 139 },
			18: { x: 499, y: 150 },
			19: { x: 431, y: 113 }
		}
	},
	46: {
		width: 7,
		height: 4,
		img: "island20.png",
		centering_offset_x: -3,
		centering_offset_y: 12,
		slots: {
			0: { x: 496, y: 78 },
			1: { x: 339, y: 109 },
			2: { x: 287, y: 158 },
			3: { x: 215, y: 173 },
			4: { x: 161, y: 201 },
			5: { x: 95, y: 252 },
			6: { x: 41, y: 307 },
			7: { x: 96, y: 329 },
			8: { x: 151, y: 424 },
			9: { x: 264, y: 414 },
			10: { x: 305, y: 468 },
			11: { x: 529, y: 462 },
			12: { x: 585, y: 431 },
			13: { x: 674, y: 413 },
			14: { x: 733, y: 379 },
			15: { x: 733, y: 303 },
			16: { x: 732, y: 236 },
			17: { x: 708, y: 202 },
			18: { x: 650, y: 166 },
			19: { x: 568, y: 90 }
		}
	},
	47: {
		width: 5,
		height: 3,
		img: "uninhabited7.png",
		centering_offset_x: 0,
		centering_offset_y: 0,
		slots: {
			0: { x: 155, y: 135 },
			1: { x: 248, y: 106 },
			2: { x: 341, y: 148 },
			3: { x: 438, y: 150 },
			4: { x: 516, y: 280 },
			5: { x: 488, y: 309 },
			6: { x: 260, y: 214 },
			7: { x: 82, y: 188 },
			8: { x: 480, y: 227 }
		}
	},
	48: {
		width: 4,
		height: 3,
		img: "uninhabited8.png",
		centering_offset_x: 0,
		centering_offset_y: 0,
		slots: {
			0: { x: 145, y: 205 },
			1: { x: 200, y: 232 },
			2: { x: 266, y: 215 },
			3: { x: 325, y: 185 },
			4: { x: 396, y: 133 },
			5: { x: 445, y: 95 },
			6: { x: 395, y: 78 },
			7: { x: 365, y: 1 }
		}
	},
	49: {
		width: 6,
		height: 3,
		img: "uninhabited9.png",
		centering_offset_x: 0,
		centering_offset_y: 0,
		slots: {
			0: { x: 98, y: 100 },
			1: { x: 234, y: 106 },
			2: { x: 331, y: 95 },
			3: { x: 484, y: 115 },
			4: { x: 705, y: 78 },
			5: { x: 665, y: 128 },
			6: { x: 463, y: 253 },
			7: { x: 290, y: 270 },
			8: { x: 220, y: 246 }
		}
	},
	50: {
		width: 4,
		height: 4,
		img: "uninhabited10.png",
		centering_offset_x: 0,
		centering_offset_y: 0,
		slots: {
			0: { x: 153, y: 111 },
			1: { x: 213, y: 95 },
			2: { x: 285, y: 118 },
			3: { x: 348, y: 133 },
			4: { x: 415, y: 170 },
			5: { x: 472, y: 358 },
			6: { x: 412, y: 400 },
			7: { x: 332, y: 425 },
			8: { x: 255, y: 445 },
			9: { x: 170, y: 435 }
		}
	},
	51: {
		width: 4,
		height: 3,
		img: "uninhabited11.png",
		centering_offset_x: 0,
		centering_offset_y: 0,
		slots: {
			0: { x: 155, y: 91 },
			1: { x: 229, y: 85 },
			2: { x: 331, y: 106 },
			3: { x: 398, y: 228 },
			4: { x: 375, y: 253 },
			5: { x: 220, y: 251 },
			6: { x: 240, y: 180 },
			7: { x: 170, y: 148 }
		}
	},
	52: {
		width: 6,
		height: 3,
		img: "uninhabited12.png",
		centering_offset_x: 0,
		centering_offset_y: 0,
		slots: {
			0: { x: 123, y: 111 },
			1: { x: 209, y: 68 },
			2: { x: 690, y: 193 },
			3: { x: 610, y: 232 },
			4: { x: 510, y: 253 },
			5: { x: 430, y: 248 },
			6: { x: 310, y: 222 },
			7: { x: 322, y: 188 },
			8: { x: 252, y: 170 },
			9: { x: 150, y: 170 }
		}
	},
	53: {
		width: 5,
		height: 3,
		img: "uninhabited13.png",
		centering_offset_x: 0,
		centering_offset_y: 0,
		slots: {
			0: { x: 33, y: 6 },
			1: { x: 98, y: 3 },
			2: { x: 232, y: 39 },
			3: { x: 572, y: 169 },
			4: { x: 400, y: 182 },
			5: { x: 310, y: 212 },
			6: { x: 210, y: 216 },
			7: { x: 140, y: 180 },
			8: { x: 60, y: 160 },
			9: { x: 78, y: 110 },
			10: { x: 59, y: 56 }
		}
	},
	54: {
		width: 4,
		height: 4,
		img: "uninhabited14.png",
		centering_offset_x: 0,
		centering_offset_y: 0,
		slots: {
			0: { x: 387, y: 69 },
			1: { x: 322, y: 66 },
			2: { x: 275, y: 104 },
			3: { x: 123, y: 152 },
			4: { x: 114, y: 223 },
			5: { x: 121, y: 260 },
			6: { x: 199, y: 304 },
			7: { x: 296, y: 306 },
			8: { x: 370, y: 272 },
			9: { x: 215, y: 233 }
		}
	},
	55: {
		width: 4,
		height: 3,
		img: "uninhabited15.png",
		centering_offset_x: 0,
		centering_offset_y: 0,
		slots: {
			0: { x: 177, y: 60 },
			1: { x: 115, y: 109 },
			2: { x: 50, y: 109 },
			3: { x: 200, y: 197 },
			4: { x: 221, y: 230 },
			5: { x: 346, y: 254 },
			6: { x: 399, y: 273 },
			7: { x: 461, y: 252 },
			8: { x: 453, y: 124 }
		}
	},
	56: {
		width: 5,
		height: 4,
		img: "uninhabited16.png",
		centering_offset_x: 0,
		centering_offset_y: 0,
		slots: {
			0: { x: 476, y: 75 },
			1: { x: 422, y: 103 },
			2: { x: 329, y: 149 },
			3: { x: 240, y: 173 },
			4: { x: 169, y: 195 },
			5: { x: 124, y: 233 },
			6: { x: 178, y: 279 },
			7: { x: 169, y: 330 },
			8: { x: 183, y: 370 },
			9: { x: 575, y: 294 }
		}
	},
	57: {
		width: 4,
		height: 3,
		img: "uninhabited17.png",
		centering_offset_x: 0,
		centering_offset_y: 0,
		slots: {
			0: { x: 206, y: 58 },
			1: { x: 234, y: 93 },
			2: { x: 140, y: 165 },
			3: { x: 112, y: 212 },
			4: { x: 209, y: 248 },
			5: { x: 218, y: 309 },
			6: { x: 293, y: 322 },
			7: { x: 347, y: 285 }
		}
	},
	58: {
		width: 5,
		height: 4,
		img: "uninhabited18.png",
		centering_offset_x: 0,
		centering_offset_y: 0,
		slots: {
			0: { x: 147, y: 279 },
			1: { x: 170, y: 334 },
			2: { x: 231, y: 365 },
			3: { x: 402, y: 364 },
			4: { x: 431, y: 322 },
			5: { x: 557, y: 320 }
		}
	},
	59: {
		width: 5,
		height: 4,
		img: "uninhabited19.png",
		centering_offset_x: 0,
		centering_offset_y: 0,
		slots: {
			0: { x: 187, y: 62 },
			1: { x: 274, y: 78 },
			2: { x: 353, y: 123 },
			3: { x: 312, y: 176 },
			4: { x: 426, y: 203 },
			5: { x: 432, y: 264 },
			6: { x: 314, y: 304 },
			7: { x: 218, y: 383 }
		}
	},
	60: {
		width: 5,
		height: 4,
		img: "uninhabited20.png",
		centering_offset_x: 0,
		centering_offset_y: 0,
		slots: {
			0: { x: 91, y: 312 },
			1: { x: 295, y: 247 },
			2: { x: 407, y: 355 },
			3: { x: 429, y: 289 },
			4: { x: 523, y: 285 },
			5: { x: 560, y: 228 },
			6: { x: 586, y: 154 },
			7: { x: 561, y: 98 },
			8: { x: 510, y: 67 }
		}
	}
}

Jap, 17-36 fehlen. Die dürften für optische Sachen wie Steine verwendet werden, auf denen man aber keine Städte bauen kann.

Die x/y-coords der einzelnen Dorf-Positionen auf den Inseln sind wie gesagt die Entfernung, um wie viele Pixel das Dorf von dem "Ursprung" der Insel verschoben ist.
centering_offset dürfte die Position nur das +/-Ressi-Icon bestimmen.
img zeigt die verwendeten Hintergrundgrafiken an, also bei "island10.png" z.B. "http://cdn.grepolis.com/images/game/map/island10.png" und "http://cdn.grepolis.com/images/game/map/5/island10.png".
Was genau mit Höhe/Breite gemacht wird hab ich nicht nach-geguckt^^
 

Harry 0815

Gast
var distance = Math.round(Math.sqrt(Math.pow(delta_x, 2) + Math.pow(delta_y, 2)) * 10) / 10;

Ich hab das mal für meine erste Insel nachgerechnet, und es sieht so aus, als würde die Laufzeit beim eigentlichen Angriff (popup) mit (Math.)floor() gerechnet. Zumindest kommt es dann auf meiner Insel auf die Sekunden hin.

PS: kann man hier auch 'ne Signatur erstellen ..
 

Harry 0815

Gast
So - Berechnung fertig! Aber kompliziert ..

Letztlich wird aus der Insel, der Himmelsrichtung und dem Offset der Polis eine Koordinate erzeugt und die wird nach dem altbekannten Satz zur Bestimmung der Entfernung benützt.

Der Code ist dann folgender ..

Code:
 {'nw':{'x':9,'y':14},'ne':{'x':17,'y':11},'sw':{'x':10,'y':13},'se':{'x':15,'y':13}}
 .... 
 var islandOffset=this.map2Pixel(town.x,town.y);
 ...
 var offsetX=this.cssOffset.x+islandOffset.x;
 var offsetY=this.cssOffset.y+islandOffset.y;
 var tOffset=this.tOffset[town.dir]||this.ftOffset;
 var tl=offsetX+town.ox,tt=offsetY+town.oy;
 if(tOffset){tl+=tOffset.x;tt+=tOffset.y;}

Wer was mit anfangen kann, schön. Ein Rat an den Rest - BLEIBEN LASSEN .. *grins*
 

GTeauDFAdGTio

Gast
schön und gut. aber kannst du damit auch außerhalb von grepolis die laufzeiten berechnen. also direkt aus den öffentlichen weltdaten heraus?

deine berechnung setzt voraus, dass gewisse werte vorhanden sind. soweit ich weiß, werden sie nachgeladen, wenn man auf der map scrollt. aber es sind von haus aus niemals alle diese daten vorhanden.
 

Harry 0815

Gast
dass gewisse werte vorhanden sind. soweit ich weiß, werden sie nachgeladen, wenn man auf der map scrollt. aber es sind von haus aus niemals alle diese daten vorhanden.

ich brauch die

1) Koordinaten der Insel - kommt aus den Weltdaten Polis (x, y)

2) das Offset des Poli - über die Koordinaten kann ich die Insel aus den Weltdaten Inseln finden und hier den Typ abfragen. Mit den Daten von FAARK, dem Inseltyp und der Slotnummer (Weltdaten Polis) lässt sich der Offset ermitteln

3) und ums ganz genau zu machen, das Offset der Himmelsrichtung - Himmelsrichtung kommt aus den Weltdaten Polis

Also alles da!
 

DeletedUser17338

Gast
Heisst das denn, dass es jetzt bald einen Laufzeitrechner für 2.0 geben wird? :D

Seit der Umstellung meiner Welten auf 2.0 habe ich keinen grösseren Angriff mehr gemacht, ohne LZR macht das einfach keinen Spass .. und wenn's keinen Spass macht, lass' ich es bleiben. Ist ja meine Freizeit und mein Geld..
 

blackshadow22

Gast
ja, wenn man den gewöhnt war wird's echt umständlich, wäre klasse wenn da jemand was vergleichbares hinbekommt oder der Angriffsplaner soweit angepasst wird, dass man nach art der truppen sortieren kann, wäre aber dann wieder nur ein PA-Vorteil
 
Oben