You are not logged in.

moecki

Ausguck

Posts: 88

Date of registration: Nov 21st 2009

  • Send private message

741

Monday, March 22nd 2010, 8:51pm

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

Posts: 4

Date of registration: Mar 24th 2010

  • Send private message

742

Wednesday, March 24th 2010, 2:26pm

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

Posts: 88

Date of registration: Nov 21st 2009

  • Send private message

743

Wednesday, March 24th 2010, 7:54pm

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

Posts: 213

Date of registration: Nov 22nd 2009

  • Send private message

744

Wednesday, March 24th 2010, 10:36pm

Hi !

Könnte event. an dieser Procedure liegen :

Source code

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

Posts: 3,126

Date of registration: Feb 28th 2008

  • Send private message

745

Wednesday, March 24th 2010, 10:57pm

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.

This post has been edited 1 times, last edit by "Larnak" (Mar 24th 2010, 11:00pm)


moecki

Ausguck

Posts: 88

Date of registration: Nov 21st 2009

  • Send private message

746

Thursday, March 25th 2010, 7:39pm

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

Posts: 15

Date of registration: Jan 15th 2008

  • Send private message

747

Thursday, March 25th 2010, 9:38pm

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

Gaoshou

Frisch Angeheuert

Posts: 4

Date of registration: Mar 24th 2010

  • Send private message

748

Friday, March 26th 2010, 12:05am

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

This post has been edited 1 times, last edit by "Gaoshou" (Mar 26th 2010, 12:06am)


GOOFY

SeeBär

Posts: 213

Date of registration: Nov 22nd 2009

  • Send private message

749

Saturday, March 27th 2010, 12:19am

@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

Posts: 88

Date of registration: Nov 21st 2009

  • Send private message

750

Saturday, March 27th 2010, 10:57am

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)

This post has been edited 3 times, last edit by "moecki" (Mar 27th 2010, 2:45pm)


GOOFY

SeeBär

Posts: 213

Date of registration: Nov 22nd 2009

  • Send private message

751

Sunday, March 28th 2010, 6:22pm

Und noch ein Hinweis... ;-)

Die Tooltips funktionieren in der neuen Version nicht mehr.

CU
GOOFY

moecki

Ausguck

Posts: 88

Date of registration: Nov 21st 2009

  • Send private message

752

Sunday, March 28th 2010, 8:44pm

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

Posts: 213

Date of registration: Nov 22nd 2009

  • Send private message

753

Monday, March 29th 2010, 12:11am

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 :

Source code

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

Posts: 213

Date of registration: Nov 22nd 2009

  • Send private message

754

Monday, March 29th 2010, 12:14am

Achja vergessen....

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

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
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

This post has been edited 1 times, last edit by "GOOFY" (Mar 29th 2010, 12:16am)


moecki

Ausguck

Posts: 88

Date of registration: Nov 21st 2009

  • Send private message

755

Monday, March 29th 2010, 12:27pm

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)

This post has been edited 2 times, last edit by "moecki" (Mar 31st 2010, 9:23am)


moecki

Ausguck

Posts: 88

Date of registration: Nov 21st 2009

  • Send private message

756

Wednesday, March 31st 2010, 9:23am

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

Posts: 213

Date of registration: Nov 22nd 2009

  • Send private message

757

Thursday, April 1st 2010, 9:50pm

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

Posts: 88

Date of registration: Nov 21st 2009

  • Send private message

758

Thursday, April 1st 2010, 10:42pm

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:

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
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)

This post has been edited 1 times, last edit by "moecki" (Apr 1st 2010, 10:44pm)


Kaptain Ramon

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

Posts: 1,661

Date of registration: Dec 10th 2007

  • Send private message

759

Friday, April 2nd 2010, 6:28am

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

fierrunner

Plankenstürmer

Posts: 38

Date of registration: Dec 6th 2009

  • Send private message

760

Friday, April 2nd 2010, 4:36pm

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ß