Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: AnnoZone Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

moecki

Ausguck

Beiträge: 88

Registrierungsdatum: 21. November 2009

  • Nachricht senden

741

Montag, 22. März 2010, 20:51

Eigentlich hatte ich daran gar nichts geändert.
Wenn ich das mit der Überarbeitung des Scans abgeschlossen habe, schaue ich mir das mal an...
  Anno 1404 - Aufstiegsrechner mit Berücksichtigung zusätzlicher Aufstiegsrechte durch Errungenschaften (Excel-Datei)
Anno 1404 - Ingame Analysator (für alle Anno-Versionen - nur mit DX9)

Gaoshou

Frisch Angeheuert

Beiträge: 4

Registrierungsdatum: 24. März 2010

  • Nachricht senden

742

Mittwoch, 24. März 2010, 14:26

Mir ist die Tage aufegefallen das das Tool im Multiplayer nicht funktioniert.
Wenn ein Kumpel ein Spiel aufmacht und ich joine, zeigt mir das Tool seine Anzahl der Bewohner an aber meine vorhanden Produktionsgebäude.

moecki

Ausguck

Beiträge: 88

Registrierungsdatum: 21. November 2009

  • Nachricht senden

743

Mittwoch, 24. März 2010, 19:54

Ist ja interessant, aber vielleicht gut zu wissen. :hey:
Nee, ernsthaft: Multiplayer habe ich noch nicht gespielt und werde dies wohl auch nicht tun. Wenn das jemand untersuchen kann, kann ich das gern einarbeiten. Ansonsten wird das Plugin wohl ein Single-Player-Tool bleiben.
  Anno 1404 - Aufstiegsrechner mit Berücksichtigung zusätzlicher Aufstiegsrechte durch Errungenschaften (Excel-Datei)
Anno 1404 - Ingame Analysator (für alle Anno-Versionen - nur mit DX9)

GOOFY

SeeBär

Beiträge: 213

Registrierungsdatum: 22. November 2009

  • Nachricht senden

744

Mittwoch, 24. März 2010, 22:36

Hi !

Könnte event. an dieser Procedure liegen :

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void ScanBuildings(DWORD start, DWORD end) 
{ 
......

player = 0;
if (!ReadProcessMemory(procHandle, (LPCVOID)(ptr+0xc0), &player, 1, &dwRead))
 break;
......
if (!player)
{
     if (exportitems)
    {									
	isl = GetIslandForBuilding(ptr, &iptr);
	GetIslandName(iptr, buf);
	sprintf(STATUS, "\n%X, %s, %s (%02X)", ptr, nProds[i], buf, isl);
	dbout(STATUS);
	strcpy(STATUS,"");
    }
    SetIDPtr(ptr);
}


Wäre mal Interresant, ob dies auch passiert wenn Du das Spiel eröffnest und dein Freund hinzu kommt ?

Ansonsten ist das erstmal nur eine "schnelle" Mutmasung, könnte aber in die richtige Richtung gehen. Das Plugin wurde ja nur auf den Singleplayer ausgelegt und da gibt es ja nur einen Spieler (Player 0).

Das "Problem" könnte sich aber auch mit dem neuen Inselscan (an dem moecki gerade arbeitet) erübrigt haben. Einfach mal abwarten bis er soweit ist und die neue Version getestet werden kann.

CU
GOOFY

Larnak

Schatzjäger

Beiträge: 3 158

Registrierungsdatum: 28. Februar 2008

  • Nachricht senden

745

Mittwoch, 24. März 2010, 22:57

Tja, ich würde sagen, da ist der Analysator das bessere Spionage-Feature. Da sind die Venedig-Schergen ja nichts dagegen :hey:

Ich denke auch, dass es damit zusammenhängt, dass der Analysator quasi den ersten Spieler ausliest, was ja dann in der Regel der Partie-Öffner ist.
Vielleicht wird bei dem Produktion-Zählverfahren ein anderes Verfahren benutzt, denn hier scheint es ja zu funktionieren nach der Aussage. Kann man dieses vielleicht auch auf die Bevölkerungszahlen anwenden?
Sonst müssten umständliche Abfrage-Optionen her. Ist die Frage, ob das vom Aufwand lohnt.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Larnak« (24. März 2010, 23:00)


moecki

Ausguck

Beiträge: 88

Registrierungsdatum: 21. November 2009

  • Nachricht senden

746

Donnerstag, 25. März 2010, 19:39

Gaoshou hatte ja geschrieben, dass er die Bewohner des Mitspielers angezeigt bekommt aber die eigenen Gebäude. Damit würde eure Vermutung nicht zutreffen. Denn mit der von GOOFY genannten Prozedur wird nur nach den Gebäuden gescannt.
Die Bewohner werden direkt ausgelesen. Wobei es hierbei zwei verschiedene Prozeduren gibt: die "lokalen" Bewohner mittels GetValues() und die "globalen" mittels CollectPeople().

BTW: Ich habe jetzt ein Verfahren gefunden, so dass die Gebäude-Pointer bereits während des Ladens eines Spiels "gesammelt" werden. Das direkte Auslesen aus dem Speicher war zu aufwändig und zum umfangreich. Jeder Gebäude-Pointer wird gleich mehrfach im Datenspeicher abgelegt. Warum das so gemacht wird, ist mir immer noch ein Rätsel. So hätte ich immer noch zahlreichen Speicher "durchsuchen" müssen.
Mit der neuen Methode erhalte ich die Gebäude-Pointer im "Vorbeigehen". Ich habe eine Prozedur gefunden, die die Gebäude-Pointer in den Speicher schreibt. Von dieser greife ich die Pointer ab. So habe ich beim Klick auf "Segel setzen" bereits alle Pointer zusammen und ein Scan erübrigt sich.
Ich muss jetzt nur noch ein wenig den Code aufräumen und dann bekommt ihr die Version...
  Anno 1404 - Aufstiegsrechner mit Berücksichtigung zusätzlicher Aufstiegsrechte durch Errungenschaften (Excel-Datei)
Anno 1404 - Ingame Analysator (für alle Anno-Versionen - nur mit DX9)

bluemoon

Leichtmatrose

Beiträge: 15

Registrierungsdatum: 15. Januar 2008

  • Nachricht senden

747

Donnerstag, 25. März 2010, 21:38

Hallo moecki
Ein Herzliches dankeschön für dieses geniale tool.
Mfg
  Life is hard, and than you die .

Gaoshou

Frisch Angeheuert

Beiträge: 4

Registrierungsdatum: 24. März 2010

  • Nachricht senden

748

Freitag, 26. März 2010, 00:05

Ja also es ist in der Tat so das ich meine eigenen Gebäude gelistet bekomme aber die Bewohner des Anderen.
Ich muss nochmal testen wie es sich verhält wenn man selbst hostet.
Das mit dem Inselscan funktioniert im Multiplayer auch nicht so ganz, meine Insel wurde immer nur als "Unbewohnt" angezeigt.

Edit:
mit anderen Worten der "lokal" modus funktioniert nicht und im globalen bekomme ich die bewohner meines freundes.


Wäre natürlich Klasse wenn das Tool im MP funktionieren würde da z.b. ich fast ausschließlich diesen spiele.
Wenn ich irgendwie helfen kann lass es mich wissen.

so long

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Gaoshou« (26. März 2010, 00:06)


GOOFY

SeeBär

Beiträge: 213

Registrierungsdatum: 22. November 2009

  • Nachricht senden

749

Samstag, 27. März 2010, 00:19

@moecki

Du musst "dringend" mal deine Items-Analyse überprüfen. Es werden nahezu komplett alle Item's falsch angezeigt.
Z.B. Saatgut Weizen wird als Saatgut Trauben im Plugin angezeigt.
Event müsste man mal die guids.xml vom Addon mit der "normalen" guids.xml abgleichen. Vieleicht wurden hier ja durch die neuen Items die ID's durcheinander gewürfelt ?!

CU GOOFY

moecki

Ausguck

Beiträge: 88

Registrierungsdatum: 21. November 2009

  • Nachricht senden

750

Samstag, 27. März 2010, 10:57

Danke für den Hinweis.
Werde mir das mal anschauen.

Edit: Was so ein Komma an der falschen Stelle bewirken kann... Problem gefixt.

Edit2: Die Version mit der völlig überarbeiteten Insel- und Gebäudesuche habe ich online gestellt. Siehe hier.

Edit3:
@Gaoshou: Ich schicke Dir mal eine Debug-Version, mit der Du den Speicher Deiner Inseln auslesen kannst.
  Anno 1404 - Aufstiegsrechner mit Berücksichtigung zusätzlicher Aufstiegsrechte durch Errungenschaften (Excel-Datei)
Anno 1404 - Ingame Analysator (für alle Anno-Versionen - nur mit DX9)

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »moecki« (27. März 2010, 14:45)


GOOFY

SeeBär

Beiträge: 213

Registrierungsdatum: 22. November 2009

  • Nachricht senden

751

Sonntag, 28. März 2010, 18:22

Und noch ein Hinweis... ;-)

Die Tooltips funktionieren in der neuen Version nicht mehr.

CU
GOOFY

moecki

Ausguck

Beiträge: 88

Registrierungsdatum: 21. November 2009

  • Nachricht senden

752

Sonntag, 28. März 2010, 20:44

Dank nochmal!
Hört sich ja bald nach Verschlimmbesserung an...
Mini-Update hochgeladen.

Noch was anderes:
Deinen Vorschlag zum geänderten MouseOver hatte ich mal ausprobiert. Das funktioniert soweit ganz gut. Was ich allerdings nervig fand, war, dass die Tooltip-Message solange eingeblendet blieb, wie man mit der Maus über Gebäude fuhr, die eine solche Message hervorrufen. Wenn man eine größere Stadt hat, bleibt so immer die Message über dem Mauszeiger bis man z. B. auf einem Stück Wiese halt machte.
Hast Du das so gelassen, oder hast Du noch zusätzlich was eingebaut?
  Anno 1404 - Aufstiegsrechner mit Berücksichtigung zusätzlicher Aufstiegsrechte durch Errungenschaften (Excel-Datei)
Anno 1404 - Ingame Analysator (für alle Anno-Versionen - nur mit DX9)

GOOFY

SeeBär

Beiträge: 213

Registrierungsdatum: 22. November 2009

  • Nachricht senden

753

Montag, 29. März 2010, 00:11

Hi moecki,

mit einer großen Stadt hab ich das bisher noch nicht probiert. Muss ich mal die Tage testen. Das einzige was ich zusätzlich eingebaut habe, ist das wenn die Maus von einem Spielobjekt (MouseOver) direkt auf das Tool trifft dann ein "manueller" MouseOut (itemUnderCursor := -1) ausgelöst wird. Nachteil ist zwar das wenn man direkt wieder auf das ursprüngliche Objekt trifft kein MouseOver ausgelöst wird ab damit kann ich gut leben.
Außerdem habe ich meine Mousehandlings innerhalb der Tools so geblockt, dass Sie auch wirklich nur innerhalb des Tools funktionieren. Z.B. wenn mit dem Mouserad gezoomt wird, zoomt nur das Tool und nicht das Spiel. Dies ist leider bei Dir so und das hat mich ziemlich "genervt". Ich gebe dann einfach die Messages nicht an das Programm weiter.

In Delphi sieht das z.B. so aus :

Quellcode

1
2
if (HandleMouseAction(wParam, lParam, _px, _py) = false) then
            RetVal := CallNextHookEx(my_hMouseHook, nCode, wParam, lParam );


Wird hier ein True zurück geliefert, geht das weitere Handling ins "leere" und Anno reagiert auf die Mausaktionen nicht.

Was die große Stadt betrifft... mal sehen event. sollte man eine Verzögerung/Timer einbauen. Muß mal schauen wie Anno selbst diese "Dauermessages" verarbeitet.

CU
GOOFY

GOOFY

SeeBär

Beiträge: 213

Registrierungsdatum: 22. November 2009

  • Nachricht senden

754

Montag, 29. März 2010, 00:14

Achja vergessen....

Die komplette Procedure des Mouseout für alle Anno-Versionen.
Wobei nur das Addon von den anderen unterscheidet.

Quellcode

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
procedure TAnnoPlugin.asmOutCursor;
begin
  case mCode[16] of
    $57FE15:    // Addon
    begin
      asm
        mov eax,[ebx+$B0]
      end;
    end;
    $54DC35:   // Version 1.2
    begin
      asm
        mov eax,[ebp+$B0]
      end;
    end;
    $54C8D5:   // Version 1.1
    begin
      asm
        mov eax,[ebp+$B0]
      end;
    end;
    $53DFC5:   // Version 1.0
    begin
      asm
        mov eax,[ebp+$B0]
      end;
    end;

  end;
  itemUnderCursor := -1;
end;


Den InsertCodeCave hast Du ja schon.

Jetzt aber.... n8

GOOFY

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »GOOFY« (29. März 2010, 00:16)


moecki

Ausguck

Beiträge: 88

Registrierungsdatum: 21. November 2009

  • Nachricht senden

755

Montag, 29. März 2010, 12:27

Ich persönlich habe die Ingame-Tooltips meist abgeschaltet, da ich kein Fan davon bin. Vielleicht bin ich daher auch kein Maßstab, was diese Funktionalität angeht.
Die Lösung von Anno (die Tooltip-Message am linken Rand des Fensters) finde ich daher auch nicht schlecht. Das stört nicht im eigentlichen Blickfeld und wenn man es darauf ankommt, schaut man kurz nach links und sieht die Message. Am Idealsten fände ich eine Manipulation dieser Original-Message...
Wo ich so darüber nachdenke: vielleicht wäre das sogar machbar, wenn man die Stelle findet, in der Anno den Tooltip-Text übergibt...
Müsste ja auch irgendwo bei dem schon bekannten Code für das MouseOver sein...

Edit:
--snip--
  Anno 1404 - Aufstiegsrechner mit Berücksichtigung zusätzlicher Aufstiegsrechte durch Errungenschaften (Excel-Datei)
Anno 1404 - Ingame Analysator (für alle Anno-Versionen - nur mit DX9)

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »moecki« (31. März 2010, 09:23)


moecki

Ausguck

Beiträge: 88

Registrierungsdatum: 21. November 2009

  • Nachricht senden

756

Mittwoch, 31. März 2010, 09:23

Ja, das war doch einfacher als ich dachte. Was haltet ihr davon?


Zu den MP-Spielen:
Es wird tatsächlich ein anderer Speicher benutzt, wenn man einem MP-Spiel beitritt. Ich habe auch den Code ausfindig gemacht, mit dem die PlayerID's eingetragen werden. Im Moment habe ich nur noch nicht herausgefunden, wie man allgemein feststellen kann, welcher der Spieler ist, der vor dem PC sitzt, auf dem das Plugin läuft. Eine Möglichkeit wäre über das Profil. Aber da muss ich auch erst einmal herausfinden, welches das eigene ist.

@Gaoshou: Bist Du sicher, dass Du im Plugin Deine eigenen Gebäude angezeigt bekommst und nicht die des anderen Spielers? Schalte ggf. mal auf lokal und schaue, wie es sich auf eigenen und fremden Inseln verhält. Du hast als beigetretener Spieler wohl anscheinend nicht die PlayerID 0, so dass eigentlich auch nicht Deine Gebäude angezeigt werden können.
  Anno 1404 - Aufstiegsrechner mit Berücksichtigung zusätzlicher Aufstiegsrechte durch Errungenschaften (Excel-Datei)
Anno 1404 - Ingame Analysator (für alle Anno-Versionen - nur mit DX9)

GOOFY

SeeBär

Beiträge: 213

Registrierungsdatum: 22. November 2009

  • Nachricht senden

757

Donnerstag, 1. April 2010, 21:50

Hi moecki !

Ich finde das sieht cool aus und ist die beste Lösung für das InGame-MouseOver !

Manipulierst Du hier die ganze Message oder fügst Du nur was hinzu (wegen dem Icon)?

Ansonsten bin ich bei der Anpassung des Plugins an den MP-Modus doch etwas sehr skeptisch. Das kommt eigentlich dem cheaten ziemlich nahe, da man sich hier einen Vorteil gegenüber seinen (menschlichen) Mitspielern verschafft. Man könnte/kann mit dem Plugin ja noch viel mehr "manipulieren". Aber damit hätte es dann den ursprünglichen Gedanken weit verfehlt.
Kann sein, dass ich mit dieser Meinung alleine da stehe aber ich bin der Meinung das man den MP-Modus nicht unterstützen sollte.

CU

GOOFY

moecki

Ausguck

Beiträge: 88

Registrierungsdatum: 21. November 2009

  • Nachricht senden

758

Donnerstag, 1. April 2010, 22:42

Ich manipuliere lediglich die Tabelle, in der die Adressen der Message-Formate hinterlegt sind. Ich trage an der Stelle, an der die Adresse zum Tooltip-Format steht, meine eigene Adresse ein. Das Original-Format lese ich zuvor ein und füge die eigenen Infos an. Damit habe ich dann auch das Icon und ich brauch keine weiteren CodeCaves.
Der Code zur Ermittlung der Tabellenadresse ist:

Quellcode

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
void GetTooltipAddress()
{
	//ermittelt die Adresse, in der die Adresse für das in Anno 
	//verwendete Tooltipformat hinterlegt ist
	//die Prozedur ab GetValueForVersion(30) wird mit zwei Argumenten aufgerufen
	//Arg. 1 mit Inhalt 0x9B3857 kennzeichnet den zu suchenden Tooltip
	//Arg. 2 ist ein Pointer zum Speichern der Tooltip-Format-Adresse
	//zusätzlich muss in ecx der Inhalt der Adresse GetValueForVersion(29) stehen
	int callAdr = GetValueForVersion(30);
	int basisAdr = GetValueForVersion(29);
	DWORD_PTR tmpAdr = 0;
	DWORD_PTR *tmpPtr = &tmpAdr;

	_asm
	{
		push tmpPtr		//Arg.2
		push 0x9B3857		//Arg.1
		mov eax,basisAdr
		mov ecx,[eax]		//ecx füllen
		call callAdr
		lea eax,[ecx+0x14]	//die gesuchte Adresse speichern
		mov tooltipAdr,eax
	}
	//Adresse des Original-Tooltips speichern
	tooltipOriginalAdr = tmpAdr;
}

Für das Addon sind GetValueForVersion(29)=0x12ACB88 und GetValueForVersion(30)=0xBC0F40. Wenn Du das auch mit umsetzen möchtest, kann ich Dir gern auch die Werte für die anderen Versionen schicken.

Ich könnte Dir sogar zustimmen, was die Funktionalität des Plugins beim MP angeht. Allerdings haben ja die Beobachtungen von Gaoshou gezeigt, dass die beigetretenen User beim bisherigen Versionsstand die Einwohnerzahl desjenigen anzeigt bekommen, der das Spiel gestartet hat. Er ist also schon im Vorteil.
Dann müsste man entweder generell die Funktionsfähigkeit ausschließen beim MP oder es zumindest auf die eigenen Spielerdaten beschränken.
Wie ich bereits sagte: Mich tangiert der MP eher peripher. Ich kann ja mal ein paar Meinungen sammeln... Vielleicht sollte man eine Umfrage machen...
Bin für alles offen! :engel:
  Anno 1404 - Aufstiegsrechner mit Berücksichtigung zusätzlicher Aufstiegsrechte durch Errungenschaften (Excel-Datei)
Anno 1404 - Ingame Analysator (für alle Anno-Versionen - nur mit DX9)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »moecki« (1. April 2010, 22:44)


Kaptain Ramon

I.A.A.M. / D.E.A.P. Supporter

Beiträge: 1 661

Registrierungsdatum: 10. Dezember 2007

  • Nachricht senden

759

Freitag, 2. April 2010, 06:28

...wer will kann ja für den mp immer noch den online Rechner benutzen... :hey:

fierrunner

Plankenstürmer

Beiträge: 38

Registrierungsdatum: 6. Dezember 2009

  • Nachricht senden

760

Freitag, 2. April 2010, 16:36

Hallo moecki,

mich tangiert der MP auch nur peripher, daher vermisse ich das Tool auch nicht, auserdem bin ich der Meinung, dass man im MP-Modus keinerlei Vorteil haben sollte:maeh:, daher sollte das Tool nicht für den MP gelten :jaaaaa:
und wie Kaptain Raimond schon gesagt hat, kann man ja den Online-Rechner verwenden.

gruß

Zurzeit sind neben Ihnen 3 Benutzer in diesem Thema unterwegs:

3 Besucher