Okay, Situation ist folgende:
VM läuft auf Windows-Server, Netzwerkkonfiguration mit Network address Translation und Portweiterleitung.
Soweit sogut -> die VM hat per DHCP die IP "a.b.c.d" zugewiesen bekommen, die beim Game-Core Start als "Public IP" verwendet wird, ergo Todgeschlagen.
(Kick bei Characterselection).
Bei Corestart mit Argument "-I ServerIP" erscheint die Fehlermeldung:
"Can not assign requested Address",
selbiges bei CONFIG-Option "BIND_IP: IP".
Ergo - der Wille des Volkes ist das Gesetz fuck ich hasse diese Pflichtlektüren.
Für obrigen Fehler gibt's folgende Dif als Fix:
game_r40250
000A0C34: 80 90
000A0C4D: 80 90
000A0CD9: 80 90
002169F3: 80 90
00216A18: 80 90
^- von der ich mit Sicherheit sagen kann, dass sie läuft, allerdings
sind Difs ziemlich... Scheiße.
Zu der Dif gibt es c.a. 100 verschiedene Sourcecode-Modifikationen, die dasselbe bewirken wollen, von der mich bisher noch keine ans Ziel gebracht hat, ergo Todgeschlagen. (Man sollte mehr "Ergo" in den deutschen Sprachgebrauch einführen.")
Da dashier soziemlich der 5012391247ste Thread zu dem Thema ist will ich meine Frage einfach formulieren:
Gibt es schon 'ne Eindeutige Lösung für genanntes Problem, am besten mit Erklärung und warum der Schnee weiß ist und wieso überhaupt?
MFG Dyshaxo =)
#Edt - mag mir mal wer diesen Pseudocode in C++ übersetzen?
Vgl: Vor DIF
Code:
bool __cdecl GetIPInfo()
{
int v0; // eax@1
signed int v1; // ecx@1
bool v2; // edx@1
struct ifaddrs *v3; // eax@2
struct ifaddrs *v4; // ebx@2
int v5; // eax@4
int v6; // edi@6
char v7; // zf@6
int v8; // eax@6
signed int v9; // ecx@6
int v10; // esi@6
int v11; // esi@10
char v12[4]; // edi@10
bool result; // eax@20
int v14; // [sp+18h] [bp-20h]@6
struct ifaddrs *ifa; // [sp+24h] [bp-14h]@1
int v16; // [sp+28h] [bp-10h]@1
v16 = *(_DWORD *)_stack_chk_guard__FBSD_1_0;
ifa = 0;
v0 = getifaddrs(&ifa);
v2 = 0;
if ( !v0 )
{
v3 = ifa;
v4 = ifa;
if ( ifa )
{
do
{
if ( v4->ifa_netmask )
{
v5 = *(_DWORD *)&v4->ifa_addr->sa_data[2];
if ( v5 )
{
if ( v5 != 16777343 )
{
v6 = (int)"192.168";
v8 = __inet_ntoa(v1, v2);
v9 = 7;
v14 = v8;
v10 = v8;
do
{
if ( !v9 )
break;
v7 = *(_BYTE *)v10++ == *(_BYTE *)v6++;
--v9;
}
while ( v7 );
if ( v7 )
goto LABEL_24;
v11 = v8;
*(_DWORD *)v12 = "10.";
v1 = 3;
do
{
if ( !v1 )
break;
v7 = *(_BYTE *)v11++ == **(_BYTE **)v12;
++*(_DWORD *)v12;
--v1;
}
while ( v7 );
if ( v7 )
{
LABEL_24:
strlcpy(g_szInternalIP, v8, 16);
fprintf(_stderrp__FBSD_1_0, "INTERNAL_IP: %s interface %s\n", v14, v4->ifa_name);
}
else
{
if ( g_szPublicIP[0] == 48 )
{
strlcpy(g_szPublicIP, v8, 16);
fprintf(_stderrp__FBSD_1_0, "PUBLIC_IP: %s interface %s\n", v14, v4->ifa_name);
}
}
}
}
}
v4 = v4->ifa_next;
}
while ( v4 );
v3 = ifa;
}
freeifaddrs(v3);
v2 = g_szPublicIP[0] != 48;
}
result = v2;
if ( *(_DWORD *)_stack_chk_guard__FBSD_1_0 != v16 )
__stack_chk_fail(v1, *(_DWORD *)_stack_chk_guard__FBSD_1_0 ^ v16);
return result;
}
Nach DIF:
Code:
bool __cdecl GetIPInfo()
{
int v0; // eax@1
signed int v1; // ecx@1
bool v2; // edx@1
struct ifaddrs *v3; // eax@2
struct ifaddrs *v4; // ebx@2
int v5; // eax@4
int v6; // edi@6
char v7; // zf@6
int v8; // eax@6
signed int v9; // ecx@6
int v10; // esi@6
int v11; // esi@10
char v12[4]; // edi@10
bool result; // eax@20
int v14; // [sp+18h] [bp-20h]@6
struct ifaddrs *ifa; // [sp+24h] [bp-14h]@1
int v16; // [sp+28h] [bp-10h]@1
v16 = *(_DWORD *)_stack_chk_guard__FBSD_1_0;
ifa = 0;
v0 = getifaddrs(&ifa);
v2 = 0;
if ( !v0 )
{
v3 = ifa;
v4 = ifa;
if ( ifa )
{
do
{
if ( v4->ifa_netmask )
{
v5 = *(_DWORD *)&v4->ifa_addr->sa_data[2];
if ( v5 )
{
if ( v5 != 16777343 )
{
v6 = (int)"192.168";
v8 = __inet_ntoa(v1, v2);
v9 = 7;
v14 = v8;
v10 = v8;
do
{
if ( !v9 )
break;
v7 = *(_BYTE *)v10++ == *(_BYTE *)v6++;
--v9;
}
while ( v7 );
if ( v7 )
goto LABEL_24;
v11 = v8;
*(_DWORD *)v12 = "10.";
v1 = 3;
do
{
if ( !v1 )
break;
v7 = *(_BYTE *)v11++ == **(_BYTE **)v12;
++*(_DWORD *)v12;
--v1;
}
while ( v7 );
if ( v7 )
{
LABEL_24:
strlcpy(g_szInternalIP, v8, 16);
fprintf(_stderrp__FBSD_1_0, "INTERNAL_IP: %s interface %s\n", v14, v4->ifa_name);
}
else
{
if ( g_szInternalIP[0] == 48 )
{
strlcpy(g_szInternalIP, v8, 16);
fprintf(_stderrp__FBSD_1_0, "PUBLIC_IP: %s interface %s\n", v14, v4->ifa_name);
}
}
}
}
}
v4 = v4->ifa_next;
}
while ( v4 );
v3 = ifa;
}
freeifaddrs(v3);
v2 = g_szInternalIP[0] != 48;
}
result = v2;
if ( *(_DWORD *)_stack_chk_guard__FBSD_1_0 != v16 )
__stack_chk_fail(v1, *(_DWORD *)_stack_chk_guard__FBSD_1_0 ^ v16);
return result;
}
Wundervoll, was die einem heutzutage im Internet alles anbieten ^_^