|
You last visited: Today at 12:27
Advertisement
kick nach char auswahl
Discussion on kick nach char auswahl within the Metin2 Private Server forum part of the Metin2 category.
10/11/2022, 12:02
|
#1
|
elite*gold: 0
Join Date: Sep 2022
Posts: 19
Received Thanks: 0
|
kick nach char auswahl
Hallo,
Ich möchte mir gerne einen Rootserver aufbauen, die Serverfiles sowie der Client sind von Fliege Reworked. Die server.py habe ich angepasst, ich komme bis zur Charakterauswahl und danach geht es direkt zum Channel Auswahl Menü.
Nun benötige ich eure Hilfe, damit dieses Problem gelöst werden kann.
Freundliche Grüße
Delrene
|
|
|
10/11/2022, 15:37
|
#2
|
elite*gold: 0
Join Date: Apr 2010
Posts: 2,037
Received Thanks: 736
|
Du musst in der Server Source die richtige IP in der clientdesc.cpp eintragen.
Der Grund dafür: dein Client sendet ein Header raus um sich mit dem Char Server zu verbinden, danach muss vom Server ein weiterer Header kommen, der dem Client die genaue dest Adresse mitteilt. Wenn die IP stimmt dann dürfte es nur noch an den Ports liegen oder du hast den falschen Host eingetragen. Die Ports sollen natürlich alle offen/umgeleitet werden, welche in den einzelnen CONFIG's deines Servers stehen also auch die mit 14000+
Mit freundlichen Grüßen, Endless
|
|
|
10/12/2022, 07:22
|
#3
|
elite*gold: 0
Join Date: Sep 2022
Posts: 19
Received Thanks: 0
|
Moin Endless,
wo finde ich die (clientdesc.cpp) ich habe mit dem WinSCP diesen Phad usr/home/Source/Server/game/src geöffnet gefunden habe ich diese Datei nicht? Vielleicht suche ich, an der falschen stelle. Was ich noch gefunden habe, in der /usr/home/game/Channel/ da habe ich Kern1-3 und die Reiche in denen befindet sich die Config. HOSTNAME: channel1
CHANNEL: 1
PORT: 13031
P2P_PORT: 14031
meintest Du die?
Auf der Client Seite in der Root habe ich die Nummern drin.
tcp_port':13001,'udp_port':13001,'state':STATE_NON E,},
tcp_port':14070,'udp_port':14070,'state':STATE_NON E,},
tcp_port':15070,'udp_port':15070,'state':STATE_NON E,},
tcp_port':16070,'udp_port':16070,'state':STATE_NON E,},
Freundliche Grüße
|
|
|
10/12/2022, 09:30
|
#4
|
elite*gold: 0
Join Date: Apr 2010
Posts: 2,037
Received Thanks: 736
|
Quote:
Originally Posted by 23Delrene
Moin Endless,
wo finde ich die (clientdesc.cpp) ich habe mit dem WinSCP diesen Phad usr/home/Source/Server/game/src geöffnet gefunden habe ich diese Datei nicht? Vielleicht suche ich, an der falschen stelle. Was ich noch gefunden habe, in der /usr/home/game/Channel/ da habe ich Kern1-3 und die Reiche in denen befindet sich die Config. HOSTNAME: channel1
CHANNEL: 1
PORT: 13031
P2P_PORT: 14031
meintest Du die?
Auf der Client Seite in der Root habe ich die Nummern drin.
tcp_port':13001,'udp_port':13001,'state':STATE_NON E,},
tcp_port':14070,'udp_port':14070,'state':STATE_NON E,},
tcp_port':15070,'udp_port':15070,'state':STATE_NON E,},
tcp_port':16070,'udp_port':16070,'state':STATE_NON E,},
Freundliche Grüße
|
die Clientdesc.cpp ist in dem Source deines Servers. Nach verändern der Datei, muss die Gamecore neu compiled werden.
Alle diese Ports 13001 etc. müssen von deinem Host auch in die virtuelle Maschine umgeleitet werden, sofern diese Ports nicht standardmäßig listnen.
Ich z.B hab damals auf Windows Portmap benutzt, via Linux nutze ich iptables. Hab dazu ein bash script in meiner Signatur gepackt -->
Gruß, Endless
|
|
|
10/12/2022, 09:52
|
#5
|
elite*gold: 0
Join Date: Sep 2022
Posts: 19
Received Thanks: 0
|
Leider ist die Clientdesc.cpp ist in dem Source auf meinen SF nicht vorhanden.
Dann erklärt sich die Situation mit den Kicks.
Ich habe die Game erstellt, in dem ich die Server Source compilen habe.
muss ich jetzt die erstellte game entpacken um an die Clientdesc.cpp zu kommen?
Freundliche Grüße
ich habe die desc_client.cpp in usr/home/Source/game/src meintest Du die?
|
|
|
10/12/2022, 13:59
|
#6
|
elite*gold: 0
Join Date: Apr 2010
Posts: 2,037
Received Thanks: 736
|
Quote:
Originally Posted by 23Delrene
Leider ist die Clientdesc.cpp ist in dem Source auf meinen SF nicht vorhanden.
Dann erklärt sich die Situation mit den Kicks.
Ich habe die Game erstellt, in dem ich die Server Source compilen habe.
muss ich jetzt die erstellte game entpacken um an die Clientdesc.cpp zu kommen?
Freundliche Grüße
ich habe die desc_client.cpp in usr/home/Source/game/src meintest Du die?
|
Im Server, wenn du dich mit Filezilla verbindest ---> /usr/home/ Source
Wenn du compilen konntest, ist die Source auch vorhanden.
Ansonsten gib in der SSH Console mal ein "locate desc_client.cpp.cpp" z.B dann wird dir angezeigt, wo sich die Datei befindet. Um es dir später leichter zu machen, würde ich mir eigene .sh Dateien erstellen, die direkt zur Sache kommen. Das spart dir am Ende eine ganze Menge Zeit und das compilen der DB würde ich in dem Fall erstmal aus der compile.sh auskommentieren. Dann dauert des ein Paar Min weniger.
Gruß, Endless
|
|
|
10/13/2022, 06:43
|
#7
|
elite*gold: 0
Join Date: Sep 2022
Posts: 19
Received Thanks: 0
|
Ich habe mal die desc_client.cpp in den Spoiler gepackt, aber wo sollen da die IPs rein? Oder bin ich auf dem falschen Weg?
Freundliche Grüße
/usr/home/Source/Server/game/src
#include "stdafx.h"
#include "config.h"
#include "utils.h"
#include "desc_client.h"
#include "desc_manager.h"
#include "char.h"
#include "protocol.h"
#include "p2p.h"
#include "buffer_manager.h"
#include "guild_manager.h"
#include "db.h"
#include "party.h"
extern LPFDWATCH main_fdw;
LPCLIENT_DESC db_clientdesc = NULL;
LPCLIENT_DESC g_pkAuthMasterDesc = NULL;
LPCLIENT_DESC g_NetmarbleDBDesc = NULL;
LPCLIENT_DESC g_TeenDesc = NULL;
LPCLIENT_DESC g_PasspodDesc = NULL;
static const char* GetKnownClientDescName(LPCLIENT_DESC desc) {
if (desc == db_clientdesc) {
return "db_clientdesc";
} else if (desc == g_pkAuthMasterDesc) {
return "g_pkAuthMasterDesc";
} else if (desc == g_NetmarbleDBDesc) {
return "g_NetmarbleDBDesc";
} else if (desc == g_TeenDesc) {
return "g_TeenDesc";
} else if (desc == g_PasspodDesc) {
return "g_PasspodDesc";
}
return "unknown";
}
CLIENT_DESC::CLIENT_DESC()
{
m_iPhaseWhenSucceed = 0;
m_bRetryWhenClosed = false;
m_LastTryToConnectTime = 0;
m_tLastChannelStatusUpdateTime = 0;
}
CLIENT_DESC::~CLIENT_DESC()
{
}
void CLIENT_DESC: estroy()
{
if (m_sock == INVALID_SOCKET) {
return;
}
P2P_MANAGER::instance().UnregisterConnector(this);
if (this == db_clientdesc)
{
CPartyManager::instance().DeleteAllParty();
CPartyManager::instance().DisablePCParty();
CGuildManager::instance().StopAllGuildWar();
DBManager::instance().StopAllBilling();
}
fdwatch_del_fd(m_lpFdw, m_sock);
sys_log(0, "SYSTEM: closing client socket. DESC #%d", m_sock);
socket_close(m_sock);
m_sock = INVALID_SOCKET;
// Chain up to base class Destroy()
DESC: estroy();
}
void CLIENT_DESC::SetRetryWhenClosed(bool b)
{
m_bRetryWhenClosed = b;
}
bool CLIENT_DESC::Connect(int iPhaseWhenSucceed)
{
if (iPhaseWhenSucceed != 0)
m_iPhaseWhenSucceed = iPhaseWhenSucceed;
if (get_global_time() - m_LastTryToConnectTime < 3) // 3ÃÊ
return false;
m_LastTryToConnectTime = get_global_time();
if (m_sock != INVALID_SOCKET)
return false;
sys_log(0, "SYSTEM: Trying to connect to %s:%d", m_stHost.c_str(), m_wPort);
m_sock = socket_connect(m_stHost.c_str(), m_wPort);
if (m_sock != INVALID_SOCKET)
{
sys_log(0, "SYSTEM: connected to server (fd %d, ptr %p)", m_sock, this);
fdwatch_add_fd(m_lpFdw, m_sock, this, FDW_READ, false);
fdwatch_add_fd(m_lpFdw, m_sock, this, FDW_WRITE, false);
SetPhase(m_iPhaseWhenSucceed);
return true;
}
else
{
SetPhase(PHASE_CLIENT_CONNECTING);
return false;
}
}
void CLIENT_DESC::Setup(LPFDWATCH _fdw, const char * _host, WORD _port)
{
// 1MB input/output buffer
m_lpFdw = _fdw;
m_stHost = _host;
m_wPort = _port;
InitializeBuffers();
m_sock = INVALID_SOCKET;
}
void CLIENT_DESC::SetPhase(int iPhase)
{
switch (iPhase)
{
case PHASE_CLIENT_CONNECTING:
sys_log(1, "PHASE_CLIENT_DESC::CONNECTING");
m_pInputProcessor = NULL;
break;
case PHASE_DBCLIENT:
{
sys_log(1, "PHASE_DBCLIENT");
if (!g_bAuthServer)
{
static bool bSentBoot = false;
if (!bSentBoot)
{
bSentBoot = true;
TPacketGDBoot p;
p.dwItemIDRange[0] = 0;
p.dwItemIDRange[1] = 0;
memcpy(p.szIP, g_szPublicIP, 16);
DBPacket(HEADER_GD_BOOT, 0, &p, sizeof(p));
}
}
TEMP_BUFFER buf;
TPacketGDSetup p;
memset(&p, 0, sizeof(p));
strlcpy(p.szPublicIP, g_szPublicIP, sizeof(p.szPublicIP));
if (!g_bAuthServer)
{
p.bChannel = g_bChannel;
p.wListenPort = mother_port;
p.wP2PPort = p2p_port;
p.bAuthServer = false;
map_allow_copy(p.alMaps, 32);
const DESC_MANAGER: ESC_SET & c_set = DESC_MANAGER::instance().GetClientSet();
DESC_MANAGER: ESC_SET::const_iterator it;
for (it = c_set.begin(); it != c_set.end(); ++it)
{
LPDESC d = *it;
if (d->GetAccountTable().id != 0)
++p.dwLoginCount;
}
buf.write(&p, sizeof(p));
if (p.dwLoginCount)
{
TPacketLoginOnSetup pck;
for (it = c_set.begin(); it != c_set.end(); ++it)
{
LPDESC d = *it;
TAccountTable & r = d->GetAccountTable();
if (r.id != 0)
{
pck.dwID = r.id;
strlcpy(pck.szLogin, r.login, sizeof(pck.szLogin));
strlcpy(pck.szSocialID, r.social_id, sizeof(pck.szSocialID));
strlcpy(pck.szHost, d->GetHostName(), sizeof(pck.szHost));
pck.dwLoginKey = d->GetLoginKey();
#ifndef _IMPROVED_PACKET_ENCRYPTION_
thecore_memcpy(pck.adwClientKey, d->GetDecryptionKey(), 16);
#endif
buf.write(&pck, sizeof(TPacketLoginOnSetup));
}
}
}
sys_log(0, "DB_SETUP current user %d size %d", p.dwLoginCount, buf.size());
// ÆÄƼ¸¦ ó¸®ÇÒ ¼ö ÀÖ°Ô µÊ.
CPartyManager::instance().EnablePCParty();
//CPartyManager::instance().SendPartyToDB();
}
else
{
p.bAuthServer = true;
buf.write(&p, sizeof(p));
}
DBPacket(HEADER_GD_SETUP, 0, buf.read_peek(), buf.size());
m_pInputProcessor = &m_inputDB;
}
break;
case PHASE_P2P:
sys_log(1, "PHASE_P2P");
if (m_lpInputBuffer)
buffer_reset(m_lpInputBuffer);
if (m_lpOutputBuffer)
buffer_reset(m_lpOutputBuffer);
m_pInputProcessor = &m_inputP2P;
break;
case PHASE_CLOSE:
m_pInputProcessor = NULL;
break;
case PHASE_TEEN:
m_inputTeen.SetStep(0);
m_pInputProcessor = &m_inputTeen;
break;
}
m_iPhase = iPhase;
}
void CLIENT_DESC: BPacketHeader(BYTE bHeader, DWORD dwHandle, DWORD dwSize)
{
buffer_write(m_lpOutputBuffer, encode_byte(bHeader), sizeof(BYTE));
buffer_write(m_lpOutputBuffer, encode_4bytes(dwHandle), sizeof(DWORD));
buffer_write(m_lpOutputBuffer, encode_4bytes(dwSize), sizeof(DWORD));
}
void CLIENT_DESC: BPacket(BYTE bHeader, DWORD dwHandle, const void * c_pvData, DWORD dwSize)
{
if (m_sock == INVALID_SOCKET) {
sys_log(0, "CLIENT_DESC [%s] trying DBPacket() while not connected",
GetKnownClientDescName(this));
return;
}
sys_log(1, "DB_PACKET: header %d handle %d size %d buffer_size %d", bHeader, dwHandle, dwSize, buffer_size(m_lpOutputBuffer));
DBPacketHeader(bHeader, dwHandle, dwSize);
if (c_pvData)
buffer_write(m_lpOutputBuffer, c_pvData, dwSize);
}
void CLIENT_DESC::Packet(const void * c_pvData, int iSize)
{
if (m_sock == INVALID_SOCKET) {
sys_log(0, "CLIENT_DESC [%s] trying Packet() while not connected",
GetKnownClientDescName(this));
return;
}
buffer_write(m_lpOutputBuffer, c_pvData, iSize);
}
bool CLIENT_DESC::IsRetryWhenClosed()
{
return (0 == thecore_is_shutdowned() && m_bRetryWhenClosed);
}
void CLIENT_DESC::Update(DWORD t)
{
if (!g_bAuthServer) {
UpdateChannelStatus(t, false);
}
}
void CLIENT_DESC::UpdateChannelStatus(DWORD t, bool fForce)
{
enum {
CHANNELSTATUS_UPDATE_PERIOD = 5*60*1000, // 5ºÐ¸¶´Ù
};
if (fForce || m_tLastChannelStatusUpdateTime+CHANNELSTATUS_UPDAT E_PERIOD < t) {
int iTotal;
int * paiEmpireUserCount;
int iLocal;
DESC_MANAGER::instance().GetUserCount(iTotal, &paiEmpireUserCount, iLocal);
TChannelStatus channelStatus;
channelStatus.nPort = mother_port;
if (g_bNoMoreClient) channelStatus.bStatus = 0;
else channelStatus.bStatus = iTotal > g_iFullUserCount ? 3 : iTotal > g_iBusyUserCount ? 2 : 1;
DBPacket(HEADER_GD_UPDATE_CHANNELSTATUS, 0, &channelStatus, sizeof(channelStatus));
m_tLastChannelStatusUpdateTime = t;
}
}
void CLIENT_DESC::Reset()
{
// Backup connection target info
LPFDWATCH fdw = m_lpFdw;
std::string host = m_stHost;
WORD port = m_wPort;
Destroy();
Initialize();
// Restore connection target info
m_lpFdw = fdw;
m_stHost = host;
m_wPort = port;
InitializeBuffers();
}
void CLIENT_DESC::InitializeBuffers()
{
m_lpOutputBuffer = buffer_new(1024 * 1024);
m_lpInputBuffer = buffer_new(1024 * 1024);
m_iMinInputBufferLen = 1024 * 1024;
}
|
|
|
10/13/2022, 09:15
|
#8
|
elite*gold: 183
Join Date: Feb 2010
Posts: 596
Received Thanks: 217
|
Wurde behoben. Einfach Libs game + db neu compilen.
|
|
|
10/15/2022, 13:35
|
#9
|
elite*gold: 0
Join Date: Sep 2022
Posts: 19
Received Thanks: 0
|
Hallo, damit hat sich das Problem noch nicht behoben. Ich glaube das Endless da recht hat mit der (desc_client.cpp). Aber leider bin ich da nicht so fit mit dem Eintragen der Ports, vielleicht kann mir Endless da ein wenig behilflich sein.
|
|
|
10/15/2022, 17:48
|
#10
|
elite*gold: 0
Join Date: Apr 2010
Posts: 2,037
Received Thanks: 736
|
Quote:
Originally Posted by 23Delrene
Hallo, damit hat sich das Problem noch nicht behoben. Ich glaube das Endless da recht hat mit der (desc_client.cpp). Aber leider bin ich da nicht so fit mit dem Eintragen der Ports, vielleicht kann mir Endless da ein wenig behilflich sein.
|
Wenn ich mich nicht irre, sind die Ports by default alle richtig im Client und in den CONFIG's. Da du aber die Fliege reworked hast, nehme ich zu 80% mal an, dass du deinen root Server schon alleine durch den Eintrag mit dem Paramenter:
Code:
PUBLIC_IP: {DEINE IP}
Ans Netz hängen kannst.
Diesen Token sollte in jeder "CONFIG" Also CH1 und alle Reiche und CH99 reinsowie Neutraler Channel
Gruß, Endless
|
|
|
10/15/2022, 18:07
|
#11
|
elite*gold: 0
Join Date: Sep 2022
Posts: 19
Received Thanks: 0
|
Hallo Endless,
Das ist meine serverinfo.py
import app
app.ServerName = None
STATE_NONE = '...'
STATE_DICT = {
0 : '....',
1 : 'NORM',
2 : 'BUSY',
3 : 'FULL' }
SERVER1_CHANNEL_DICT = {
1:{'key':11,'name':'Channel1','ip':'Dyn.Adresse',' tcp_port':13001,'udp_port':13001,'state':STATE_NON E,},
2:{'key':12,'name':'Channel2','ip':'Dyn.Adresse',' tcp_port':14070,'udp_port':14070,'state':STATE_NON E,},
3:{'key':13,'name':'Channel3','ip':'Dyn.Adresse',' tcp_port':15070,'udp_port':15070,'state':STATE_NON E,},
4:{'key':14,'name':'Channel4','ip':'Dyn.Adresse',' tcp_port':16070,'udp_port':16070,'state':STATE_NON E,},
}
REGION_NAME_DICT = {
0 : 'GERMANY',
}
REGION_AUTH_SERVER_DICT = {
0 : {
1 : { 'ip':'Dyn.Adresse', 'port':11002, },
}
}
REGION_DICT = {
0 : {
1 : { 'name' : 'Client V4', 'channel' : SERVER1_CHANNEL_DICT, },
},
}
MARKADDR_DICT = {
10 : { 'ip' : 'Dyn.Adresse', 'tcp_port' : 13001, 'mark' : '10.tga', 'symbol_path' : '10', },
}
TESTADDR = { 'ip' : 'Dyn.Adresse', 'tcp_port' : 50000, 'udp_port' : 50000, }
#DONE
so sieht die config auf den server aus. also channel1/kern1/config
HOSTNAME: channel1
CHANNEL: 1
PORT: 13031
P2P_PORT: 14031
DB_PORT: 92378
DB_ADDR: localhost
MAP_ALLOW: 5 25 45 107 108 109 61 62 63 64 65 66 351
PASSES_PER_SEC: 25
SAVE_EVENT_SECOND_CYCLE: 180
PING_EVENT_SECOND_CYCLE: 180
PLAYER_SQL: localhost core fliege player
COMMON_SQL: localhost core fliege common
LOG_SQL: localhost core fliege log
LOCALE_SERVICE: germany
NO_PK: 1
VIEW_RANGE: 8000
CHECK_MULTIHACK: 0
MAX_LEVEL: 105
das ist channel1/reiche/config
HOSTNAME: channel1
CHANNEL: 1
PORT: 13001
P2P_PORT: 14001
DB_PORT: 92378
DB_ADDR: localhost
MAP_ALLOW: 41 43 44 1 3 4 21 23 24
PASSES_PER_SEC: 25
SAVE_EVENT_SECOND_CYCLE: 180
PING_EVENT_SECOND_CYCLE: 180
PLAYER_SQL: localhost core fliege player
COMMON_SQL: localhost core fliege common
LOG_SQL: localhost core fliege log
LOCALE_SERVICE: germany
NO_PK: 1
VIEW_RANGE: 8000
CHECK_MULTIHACK: 0
MAX_LEVEL: 105
Was jetzt fehlt, ist CH99 sowie Neutraler Channel
doch gefunden /usr/home/game/Neutraler_Channel
TEST_SERVER: 0
HOSTNAME: game99
CHANNEL: 99
PORT: 13099
P2P_PORT: 14099
DB_PORT: 92378
DB_ADDR: localhost
MAP_ALLOW: 81 103 105 110 111 112 113 181 182 183 114 118 119 150
TABLE_POSTFIX:
PASSES_PER_SEC: 25
SAVE_EVENT_SECOND_CYCLE: 180
PING_EVENT_SECOND_CYCLE: 180
PLAYER_SQL: localhost core fliege player
COMMON_SQL: localhost core fliege common
LOG_SQL: localhost core fliege log
LOCALE_SERVICE: germany
#NO_PK: 1
VIEW_RANGE: 8000
CHECK_MULTIHACK: 0
MAX_LEVEL: 105
aber die PUBLIC_IP: {DEINE IP} ist da, nicht gelistet. oder suche ich in den sf falsch?
dann wäre da noch der /usr/home/game/Loginserver
HOSTNAME: auth
CHANNEL: 1
PORT: 11002
P2P_PORT: 12000
DB_PORT: 92378
DB_ADDR: localhost
TABLE_POSTFIX:
ITEM_ID_RANGE: 000000001 000000002
PASSES_PER_SEC: 25
SAVE_EVENT_SECOND_CYCLE: 180
PING_EVENT_SECOND_CYCLE: 180
AUTH_SERVER: master
PLAYER_SQL: localhost core fliege account
COMMON_SQL: localhost core fliege common
LOG_SQL: localhost core fliege log
LOCALE_SERVICE: germany
MARK_SERVER: 1
|
|
|
10/16/2022, 00:58
|
#12
|
elite*gold: 0
Join Date: Apr 2010
Posts: 2,037
Received Thanks: 736
|
Quote:
Originally Posted by 23Delrene
Hallo Endless,
Das ist meine serverinfo.py
import app
app.ServerName = None
STATE_NONE = '...'
STATE_DICT = {
0 : '....',
1 : 'NORM',
2 : 'BUSY',
3 : 'FULL' }
SERVER1_CHANNEL_DICT = {
1:{'key':11,'name':'Channel1','ip':'Dyn.Adresse',' tcp_port':13001,'udp_port':13001,'state':STATE_NON E,},
2:{'key':12,'name':'Channel2','ip':'Dyn.Adresse',' tcp_port':14070,'udp_port':14070,'state':STATE_NON E,},
3:{'key':13,'name':'Channel3','ip':'Dyn.Adresse',' tcp_port':15070,'udp_port':15070,'state':STATE_NON E,},
4:{'key':14,'name':'Channel4','ip':'Dyn.Adresse',' tcp_port':16070,'udp_port':16070,'state':STATE_NON E,},
}
REGION_NAME_DICT = {
0 : 'GERMANY',
}
REGION_AUTH_SERVER_DICT = {
0 : {
1 : { 'ip':'Dyn.Adresse', 'port':11002, },
}
}
REGION_DICT = {
0 : {
1 : { 'name' : 'Client V4', 'channel' : SERVER1_CHANNEL_DICT, },
},
}
MARKADDR_DICT = {
10 : { 'ip' : 'Dyn.Adresse', 'tcp_port' : 13001, 'mark' : '10.tga', 'symbol_path' : '10', },
}
TESTADDR = { 'ip' : 'Dyn.Adresse', 'tcp_port' : 50000, 'udp_port' : 50000, }
#DONE
so sieht die config auf den server aus. also channel1/kern1/config
HOSTNAME: channel1
CHANNEL: 1
PORT: 13031
P2P_PORT: 14031
DB_PORT: 92378
DB_ADDR: localhost
MAP_ALLOW: 5 25 45 107 108 109 61 62 63 64 65 66 351
PASSES_PER_SEC: 25
SAVE_EVENT_SECOND_CYCLE: 180
PING_EVENT_SECOND_CYCLE: 180
PLAYER_SQL: localhost core fliege player
COMMON_SQL: localhost core fliege common
LOG_SQL: localhost core fliege log
LOCALE_SERVICE: germany
NO_PK: 1
VIEW_RANGE: 8000
CHECK_MULTIHACK: 0
MAX_LEVEL: 105
das ist channel1/reiche/config
HOSTNAME: channel1
CHANNEL: 1
PORT: 13001
P2P_PORT: 14001
DB_PORT: 92378
DB_ADDR: localhost
MAP_ALLOW: 41 43 44 1 3 4 21 23 24
PASSES_PER_SEC: 25
SAVE_EVENT_SECOND_CYCLE: 180
PING_EVENT_SECOND_CYCLE: 180
PLAYER_SQL: localhost core fliege player
COMMON_SQL: localhost core fliege common
LOG_SQL: localhost core fliege log
LOCALE_SERVICE: germany
NO_PK: 1
VIEW_RANGE: 8000
CHECK_MULTIHACK: 0
MAX_LEVEL: 105
Was jetzt fehlt, ist CH99 sowie Neutraler Channel
doch gefunden /usr/home/game/Neutraler_Channel
TEST_SERVER: 0
HOSTNAME: game99
CHANNEL: 99
PORT: 13099
P2P_PORT: 14099
DB_PORT: 92378
DB_ADDR: localhost
MAP_ALLOW: 81 103 105 110 111 112 113 181 182 183 114 118 119 150
TABLE_POSTFIX:
PASSES_PER_SEC: 25
SAVE_EVENT_SECOND_CYCLE: 180
PING_EVENT_SECOND_CYCLE: 180
PLAYER_SQL: localhost core fliege player
COMMON_SQL: localhost core fliege common
LOG_SQL: localhost core fliege log
LOCALE_SERVICE: germany
#NO_PK: 1
VIEW_RANGE: 8000
CHECK_MULTIHACK: 0
MAX_LEVEL: 105
aber die PUBLIC_IP: {DEINE IP} ist da, nicht gelistet. oder suche ich in den sf falsch?
dann wäre da noch der /usr/home/game/Loginserver
HOSTNAME: auth
CHANNEL: 1
PORT: 11002
P2P_PORT: 12000
DB_PORT: 92378
DB_ADDR: localhost
TABLE_POSTFIX:
ITEM_ID_RANGE: 000000001 000000002
PASSES_PER_SEC: 25
SAVE_EVENT_SECOND_CYCLE: 180
PING_EVENT_SECOND_CYCLE: 180
AUTH_SERVER: master
PLAYER_SQL: localhost core fliege account
COMMON_SQL: localhost core fliege common
LOG_SQL: localhost core fliege log
LOCALE_SERVICE: germany
MARK_SERVER: 1
|
Musst du manuell dazuschreiben ^^
Meine Serverinfo.py sieht so aus:
Code:
import app
app.ServerName = None
STATE_NONE = '....'
STATE_DICT = {
0 : '....',
1 : 'NORM',
2 : 'BUSY',
3 : 'FULL' }
SERVER1_CHANNEL_DICT = {
1:{'key':11,'name':'CH1','ip':'x.x.x.x','tcp_port':13001,'udp_port':13001,'state':STATE_NONE,},
}
REGION_NAME_DICT = {
0 : 'GERMANY',
}
REGION_AUTH_SERVER_DICT = {
0 : {
1 : { 'ip':'x.x.x.x', 'port':11002, },
}
}
REGION_DICT = {
0 : {
1 : { 'name' : 'EXAMPLE', 'channel' : SERVER1_CHANNEL_DICT, },
},
}
MARKADDR_DICT = {
10 : { 'ip' : 'x.x.x.x', 'tcp_port' : 13001, 'mark' : '10.tga', 'symbol_path' : '10', },
}
TESTADDR = { 'ip' : 'x.x.x.x', 'tcp_port' : 50000, 'udp_port' : 50000, }
Falls es nicht an der public IP liegt, versuch mal mit meiner serverinfo.py, kopier einfach den ganzen Inhalt und hau es spaßeshalber bei dir rein und ändere Example zu deinem Servername und die x.x.x.x zu der IP.
Gruß, Endless
|
|
|
10/16/2022, 11:14
|
#13
|
elite*gold: 0
Join Date: Sep 2022
Posts: 19
Received Thanks: 0
|
Hallo Endless,
leider hat es mich nicht weiter geführt.
Ich habe hier nochmal die desc_client.cpp. Müssten da nicht IP nummern drin sein?
#include "stdafx.h"
#include "config.h"
#include "utils.h"
#include "desc_client.h"
#include "desc_manager.h"
#include "char.h"
#include "protocol.h"
#include "p2p.h"
#include "buffer_manager.h"
#include "guild_manager.h"
#include "db.h"
#include "party.h"
extern LPFDWATCH main_fdw;
LPCLIENT_DESC db_clientdesc = NULL;
LPCLIENT_DESC g_pkAuthMasterDesc = NULL;
LPCLIENT_DESC g_NetmarbleDBDesc = NULL;
LPCLIENT_DESC g_TeenDesc = NULL;
LPCLIENT_DESC g_PasspodDesc = NULL;
static const char* GetKnownClientDescName(LPCLIENT_DESC desc) {
if (desc == db_clientdesc) {
return "db_clientdesc";
} else if (desc == g_pkAuthMasterDesc) {
return "g_pkAuthMasterDesc";
} else if (desc == g_NetmarbleDBDesc) {
return "g_NetmarbleDBDesc";
} else if (desc == g_TeenDesc) {
return "g_TeenDesc";
} else if (desc == g_PasspodDesc) {
return "g_PasspodDesc";
}
return "unknown";
}
CLIENT_DESC::CLIENT_DESC()
{
m_iPhaseWhenSucceed = 0;
m_bRetryWhenClosed = false;
m_LastTryToConnectTime = 0;
m_tLastChannelStatusUpdateTime = 0;
}
CLIENT_DESC::~CLIENT_DESC()
{
}
void CLIENT_DESC: estroy()
{
if (m_sock == INVALID_SOCKET) {
return;
}
P2P_MANAGER::instance().UnregisterConnector(this);
if (this == db_clientdesc)
{
CPartyManager::instance().DeleteAllParty();
CPartyManager::instance().DisablePCParty();
CGuildManager::instance().StopAllGuildWar();
DBManager::instance().StopAllBilling();
}
fdwatch_del_fd(m_lpFdw, m_sock);
sys_log(0, "SYSTEM: closing client socket. DESC #%d", m_sock);
socket_close(m_sock);
m_sock = INVALID_SOCKET;
// Chain up to base class Destroy()
DESC: estroy();
}
void CLIENT_DESC::SetRetryWhenClosed(bool b)
{
m_bRetryWhenClosed = b;
}
bool CLIENT_DESC::Connect(int iPhaseWhenSucceed)
{
if (iPhaseWhenSucceed != 0)
m_iPhaseWhenSucceed = iPhaseWhenSucceed;
if (get_global_time() - m_LastTryToConnectTime < 3) // 3ÃÊ
return false;
m_LastTryToConnectTime = get_global_time();
if (m_sock != INVALID_SOCKET)
return false;
sys_log(0, "SYSTEM: Trying to connect to %s:%d", m_stHost.c_str(), m_wPort);
m_sock = socket_connect(m_stHost.c_str(), m_wPort);
if (m_sock != INVALID_SOCKET)
{
sys_log(0, "SYSTEM: connected to server (fd %d, ptr %p)", m_sock, this);
fdwatch_add_fd(m_lpFdw, m_sock, this, FDW_READ, false);
fdwatch_add_fd(m_lpFdw, m_sock, this, FDW_WRITE, false);
SetPhase(m_iPhaseWhenSucceed);
return true;
}
else
{
SetPhase(PHASE_CLIENT_CONNECTING);
return false;
}
}
void CLIENT_DESC::Setup(LPFDWATCH _fdw, const char * _host, WORD _port)
{
// 1MB input/output buffer
m_lpFdw = _fdw;
m_stHost = _host;
m_wPort = _port;
InitializeBuffers();
m_sock = INVALID_SOCKET;
}
void CLIENT_DESC::SetPhase(int iPhase)
{
switch (iPhase)
{
case PHASE_CLIENT_CONNECTING:
sys_log(1, "PHASE_CLIENT_DESC::CONNECTING");
m_pInputProcessor = NULL;
break;
case PHASE_DBCLIENT:
{
sys_log(1, "PHASE_DBCLIENT");
if (!g_bAuthServer)
{
static bool bSentBoot = false;
if (!bSentBoot)
{
bSentBoot = true;
TPacketGDBoot p;
p.dwItemIDRange[0] = 0;
p.dwItemIDRange[1] = 0;
memcpy(p.szIP, g_szPublicIP, 16);
DBPacket(HEADER_GD_BOOT, 0, &p, sizeof(p));
}
}
TEMP_BUFFER buf;
TPacketGDSetup p;
memset(&p, 0, sizeof(p));
strlcpy(p.szPublicIP, g_szPublicIP, sizeof(p.szPublicIP));
if (!g_bAuthServer)
{
p.bChannel = g_bChannel;
p.wListenPort = mother_port;
p.wP2PPort = p2p_port;
p.bAuthServer = false;
map_allow_copy(p.alMaps, 32);
const DESC_MANAGER: ESC_SET & c_set = DESC_MANAGER::instance().GetClientSet();
DESC_MANAGER: ESC_SET::const_iterator it;
for (it = c_set.begin(); it != c_set.end(); ++it)
{
LPDESC d = *it;
if (d->GetAccountTable().id != 0)
++p.dwLoginCount;
}
buf.write(&p, sizeof(p));
if (p.dwLoginCount)
{
TPacketLoginOnSetup pck;
for (it = c_set.begin(); it != c_set.end(); ++it)
{
LPDESC d = *it;
TAccountTable & r = d->GetAccountTable();
if (r.id != 0)
{
pck.dwID = r.id;
strlcpy(pck.szLogin, r.login, sizeof(pck.szLogin));
strlcpy(pck.szSocialID, r.social_id, sizeof(pck.szSocialID));
strlcpy(pck.szHost, d->GetHostName(), sizeof(pck.szHost));
pck.dwLoginKey = d->GetLoginKey();
#ifndef _IMPROVED_PACKET_ENCRYPTION_
thecore_memcpy(pck.adwClientKey, d->GetDecryptionKey(), 16);
#endif
buf.write(&pck, sizeof(TPacketLoginOnSetup));
}
}
}
sys_log(0, "DB_SETUP current user %d size %d", p.dwLoginCount, buf.size());
// ÆÄƼ¸¦ ó¸®ÇÒ ¼ö ÀÖ°Ô µÊ.
CPartyManager::instance().EnablePCParty();
//CPartyManager::instance().SendPartyToDB();
}
else
{
p.bAuthServer = true;
buf.write(&p, sizeof(p));
}
DBPacket(HEADER_GD_SETUP, 0, buf.read_peek(), buf.size());
m_pInputProcessor = &m_inputDB;
}
break;
case PHASE_P2P:
sys_log(1, "PHASE_P2P");
if (m_lpInputBuffer)
buffer_reset(m_lpInputBuffer);
if (m_lpOutputBuffer)
buffer_reset(m_lpOutputBuffer);
m_pInputProcessor = &m_inputP2P;
break;
case PHASE_CLOSE:
m_pInputProcessor = NULL;
break;
case PHASE_TEEN:
m_inputTeen.SetStep(0);
m_pInputProcessor = &m_inputTeen;
break;
}
m_iPhase = iPhase;
}
void CLIENT_DESC: BPacketHeader(BYTE bHeader, DWORD dwHandle, DWORD dwSize)
{
buffer_write(m_lpOutputBuffer, encode_byte(bHeader), sizeof(BYTE));
buffer_write(m_lpOutputBuffer, encode_4bytes(dwHandle), sizeof(DWORD));
buffer_write(m_lpOutputBuffer, encode_4bytes(dwSize), sizeof(DWORD));
}
void CLIENT_DESC: BPacket(BYTE bHeader, DWORD dwHandle, const void * c_pvData, DWORD dwSize)
{
if (m_sock == INVALID_SOCKET) {
sys_log(0, "CLIENT_DESC [%s] trying DBPacket() while not connected",
GetKnownClientDescName(this));
return;
}
sys_log(1, "DB_PACKET: header %d handle %d size %d buffer_size %d", bHeader, dwHandle, dwSize, buffer_size(m_lpOutputBuffer));
DBPacketHeader(bHeader, dwHandle, dwSize);
if (c_pvData)
buffer_write(m_lpOutputBuffer, c_pvData, dwSize);
}
void CLIENT_DESC::Packet(const void * c_pvData, int iSize)
{
if (m_sock == INVALID_SOCKET) {
sys_log(0, "CLIENT_DESC [%s] trying Packet() while not connected",
GetKnownClientDescName(this));
return;
}
buffer_write(m_lpOutputBuffer, c_pvData, iSize);
}
bool CLIENT_DESC::IsRetryWhenClosed()
{
return (0 == thecore_is_shutdowned() && m_bRetryWhenClosed);
}
void CLIENT_DESC::Update(DWORD t)
{
if (!g_bAuthServer) {
UpdateChannelStatus(t, false);
}
}
void CLIENT_DESC::UpdateChannelStatus(DWORD t, bool fForce)
{
enum {
CHANNELSTATUS_UPDATE_PERIOD = 5*60*1000, // 5ºÐ¸¶´Ù
};
if (fForce || m_tLastChannelStatusUpdateTime+CHANNELSTATUS_UPDAT E_PERIOD < t) {
int iTotal;
int * paiEmpireUserCount;
int iLocal;
DESC_MANAGER::instance().GetUserCount(iTotal, &paiEmpireUserCount, iLocal);
TChannelStatus channelStatus;
channelStatus.nPort = mother_port;
if (g_bNoMoreClient) channelStatus.bStatus = 0;
else channelStatus.bStatus = iTotal > g_iFullUserCount ? 3 : iTotal > g_iBusyUserCount ? 2 : 1;
DBPacket(HEADER_GD_UPDATE_CHANNELSTATUS, 0, &channelStatus, sizeof(channelStatus));
m_tLastChannelStatusUpdateTime = t;
}
}
void CLIENT_DESC::Reset()
{
// Backup connection target info
LPFDWATCH fdw = m_lpFdw;
std::string host = m_stHost;
WORD port = m_wPort;
Destroy();
Initialize();
// Restore connection target info
m_lpFdw = fdw;
m_stHost = host;
m_wPort = port;
InitializeBuffers();
}
void CLIENT_DESC::InitializeBuffers()
{
m_lpOutputBuffer = buffer_new(1024 * 1024);
m_lpInputBuffer = buffer_new(1024 * 1024);
m_iMinInputBufferLen = 1024 * 1024;
hier nochmal die geänderte Config natürlich hatte ich das bei allen durchgeführt.
TEST_SERVER: 0
HOSTNAME: game99
CHANNEL: 99
PORT: 13099
P2P_PORT: 14099
DB_PORT: 92378
DB_ADDR: localhost
MAP_ALLOW: 81 103 105 110 111 112 113 181 182 183 114 118 119 150
TABLE_POSTFIX:
PASSES_PER_SEC: 25
SAVE_EVENT_SECOND_CYCLE: 180
PING_EVENT_SECOND_CYCLE: 180
PLAYER_SQL: localhost core fliege player
COMMON_SQL: localhost core fliege common
LOG_SQL: localhost core fliege log
LOCALE_SERVICE: germany
#NO_PK: 1
VIEW_RANGE: 8000
CHECK_MULTIHACK: 0
MAX_LEVEL: 105
PUBLIC_IP: {meine ip}
|
|
|
10/16/2022, 17:41
|
#14
|
elite*gold: 0
Join Date: Apr 2010
Posts: 2,037
Received Thanks: 736
|
Quote:
Originally Posted by 23Delrene
Hallo Endless,
leider hat es mich nicht weiter geführt.
Ich habe hier nochmal die desc_client.cpp. Müssten da nicht IP nummern drin sein?
#include "stdafx.h"
#include "config.h"
#include "utils.h"
#include "desc_client.h"
#include "desc_manager.h"
#include "char.h"
#include "protocol.h"
#include "p2p.h"
#include "buffer_manager.h"
#include "guild_manager.h"
#include "db.h"
#include "party.h"
extern LPFDWATCH main_fdw;
LPCLIENT_DESC db_clientdesc = NULL;
LPCLIENT_DESC g_pkAuthMasterDesc = NULL;
LPCLIENT_DESC g_NetmarbleDBDesc = NULL;
LPCLIENT_DESC g_TeenDesc = NULL;
LPCLIENT_DESC g_PasspodDesc = NULL;
static const char* GetKnownClientDescName(LPCLIENT_DESC desc) {
if (desc == db_clientdesc) {
return "db_clientdesc";
} else if (desc == g_pkAuthMasterDesc) {
return "g_pkAuthMasterDesc";
} else if (desc == g_NetmarbleDBDesc) {
return "g_NetmarbleDBDesc";
} else if (desc == g_TeenDesc) {
return "g_TeenDesc";
} else if (desc == g_PasspodDesc) {
return "g_PasspodDesc";
}
return "unknown";
}
CLIENT_DESC::CLIENT_DESC()
{
m_iPhaseWhenSucceed = 0;
m_bRetryWhenClosed = false;
m_LastTryToConnectTime = 0;
m_tLastChannelStatusUpdateTime = 0;
}
CLIENT_DESC::~CLIENT_DESC()
{
}
void CLIENT_DESC: estroy()
{
if (m_sock == INVALID_SOCKET) {
return;
}
P2P_MANAGER::instance().UnregisterConnector(this);
if (this == db_clientdesc)
{
CPartyManager::instance().DeleteAllParty();
CPartyManager::instance().DisablePCParty();
CGuildManager::instance().StopAllGuildWar();
DBManager::instance().StopAllBilling();
}
fdwatch_del_fd(m_lpFdw, m_sock);
sys_log(0, "SYSTEM: closing client socket. DESC #%d", m_sock);
socket_close(m_sock);
m_sock = INVALID_SOCKET;
// Chain up to base class Destroy()
DESC: estroy();
}
void CLIENT_DESC::SetRetryWhenClosed(bool b)
{
m_bRetryWhenClosed = b;
}
bool CLIENT_DESC::Connect(int iPhaseWhenSucceed)
{
if (iPhaseWhenSucceed != 0)
m_iPhaseWhenSucceed = iPhaseWhenSucceed;
if (get_global_time() - m_LastTryToConnectTime < 3) // 3ÃÊ
return false;
m_LastTryToConnectTime = get_global_time();
if (m_sock != INVALID_SOCKET)
return false;
sys_log(0, "SYSTEM: Trying to connect to %s:%d", m_stHost.c_str(), m_wPort);
m_sock = socket_connect(m_stHost.c_str(), m_wPort);
if (m_sock != INVALID_SOCKET)
{
sys_log(0, "SYSTEM: connected to server (fd %d, ptr %p)", m_sock, this);
fdwatch_add_fd(m_lpFdw, m_sock, this, FDW_READ, false);
fdwatch_add_fd(m_lpFdw, m_sock, this, FDW_WRITE, false);
SetPhase(m_iPhaseWhenSucceed);
return true;
}
else
{
SetPhase(PHASE_CLIENT_CONNECTING);
return false;
}
}
void CLIENT_DESC::Setup(LPFDWATCH _fdw, const char * _host, WORD _port)
{
// 1MB input/output buffer
m_lpFdw = _fdw;
m_stHost = _host;
m_wPort = _port;
InitializeBuffers();
m_sock = INVALID_SOCKET;
}
void CLIENT_DESC::SetPhase(int iPhase)
{
switch (iPhase)
{
case PHASE_CLIENT_CONNECTING:
sys_log(1, "PHASE_CLIENT_DESC::CONNECTING");
m_pInputProcessor = NULL;
break;
case PHASE_DBCLIENT:
{
sys_log(1, "PHASE_DBCLIENT");
if (!g_bAuthServer)
{
static bool bSentBoot = false;
if (!bSentBoot)
{
bSentBoot = true;
TPacketGDBoot p;
p.dwItemIDRange[0] = 0;
p.dwItemIDRange[1] = 0;
memcpy(p.szIP, g_szPublicIP, 16);
DBPacket(HEADER_GD_BOOT, 0, &p, sizeof(p));
}
}
TEMP_BUFFER buf;
TPacketGDSetup p;
memset(&p, 0, sizeof(p));
strlcpy(p.szPublicIP, g_szPublicIP, sizeof(p.szPublicIP));
if (!g_bAuthServer)
{
p.bChannel = g_bChannel;
p.wListenPort = mother_port;
p.wP2PPort = p2p_port;
p.bAuthServer = false;
map_allow_copy(p.alMaps, 32);
const DESC_MANAGER: ESC_SET & c_set = DESC_MANAGER::instance().GetClientSet();
DESC_MANAGER: ESC_SET::const_iterator it;
for (it = c_set.begin(); it != c_set.end(); ++it)
{
LPDESC d = *it;
if (d->GetAccountTable().id != 0)
++p.dwLoginCount;
}
buf.write(&p, sizeof(p));
if (p.dwLoginCount)
{
TPacketLoginOnSetup pck;
for (it = c_set.begin(); it != c_set.end(); ++it)
{
LPDESC d = *it;
TAccountTable & r = d->GetAccountTable();
if (r.id != 0)
{
pck.dwID = r.id;
strlcpy(pck.szLogin, r.login, sizeof(pck.szLogin));
strlcpy(pck.szSocialID, r.social_id, sizeof(pck.szSocialID));
strlcpy(pck.szHost, d->GetHostName(), sizeof(pck.szHost));
pck.dwLoginKey = d->GetLoginKey();
#ifndef _IMPROVED_PACKET_ENCRYPTION_
thecore_memcpy(pck.adwClientKey, d->GetDecryptionKey(), 16);
#endif
buf.write(&pck, sizeof(TPacketLoginOnSetup));
}
}
}
sys_log(0, "DB_SETUP current user %d size %d", p.dwLoginCount, buf.size());
// ÆÄƼ¸¦ ó¸®ÇÒ ¼ö ÀÖ°Ô µÊ.
CPartyManager::instance().EnablePCParty();
//CPartyManager::instance().SendPartyToDB();
}
else
{
p.bAuthServer = true;
buf.write(&p, sizeof(p));
}
DBPacket(HEADER_GD_SETUP, 0, buf.read_peek(), buf.size());
m_pInputProcessor = &m_inputDB;
}
break;
case PHASE_P2P:
sys_log(1, "PHASE_P2P");
if (m_lpInputBuffer)
buffer_reset(m_lpInputBuffer);
if (m_lpOutputBuffer)
buffer_reset(m_lpOutputBuffer);
m_pInputProcessor = &m_inputP2P;
break;
case PHASE_CLOSE:
m_pInputProcessor = NULL;
break;
case PHASE_TEEN:
m_inputTeen.SetStep(0);
m_pInputProcessor = &m_inputTeen;
break;
}
m_iPhase = iPhase;
}
void CLIENT_DESC: BPacketHeader(BYTE bHeader, DWORD dwHandle, DWORD dwSize)
{
buffer_write(m_lpOutputBuffer, encode_byte(bHeader), sizeof(BYTE));
buffer_write(m_lpOutputBuffer, encode_4bytes(dwHandle), sizeof(DWORD));
buffer_write(m_lpOutputBuffer, encode_4bytes(dwSize), sizeof(DWORD));
}
void CLIENT_DESC: BPacket(BYTE bHeader, DWORD dwHandle, const void * c_pvData, DWORD dwSize)
{
if (m_sock == INVALID_SOCKET) {
sys_log(0, "CLIENT_DESC [%s] trying DBPacket() while not connected",
GetKnownClientDescName(this));
return;
}
sys_log(1, "DB_PACKET: header %d handle %d size %d buffer_size %d", bHeader, dwHandle, dwSize, buffer_size(m_lpOutputBuffer));
DBPacketHeader(bHeader, dwHandle, dwSize);
if (c_pvData)
buffer_write(m_lpOutputBuffer, c_pvData, dwSize);
}
void CLIENT_DESC::Packet(const void * c_pvData, int iSize)
{
if (m_sock == INVALID_SOCKET) {
sys_log(0, "CLIENT_DESC [%s] trying Packet() while not connected",
GetKnownClientDescName(this));
return;
}
buffer_write(m_lpOutputBuffer, c_pvData, iSize);
}
bool CLIENT_DESC::IsRetryWhenClosed()
{
return (0 == thecore_is_shutdowned() && m_bRetryWhenClosed);
}
void CLIENT_DESC::Update(DWORD t)
{
if (!g_bAuthServer) {
UpdateChannelStatus(t, false);
}
}
void CLIENT_DESC::UpdateChannelStatus(DWORD t, bool fForce)
{
enum {
CHANNELSTATUS_UPDATE_PERIOD = 5*60*1000, // 5ºÐ¸¶´Ù
};
if (fForce || m_tLastChannelStatusUpdateTime+CHANNELSTATUS_UPDAT E_PERIOD < t) {
int iTotal;
int * paiEmpireUserCount;
int iLocal;
DESC_MANAGER::instance().GetUserCount(iTotal, &paiEmpireUserCount, iLocal);
TChannelStatus channelStatus;
channelStatus.nPort = mother_port;
if (g_bNoMoreClient) channelStatus.bStatus = 0;
else channelStatus.bStatus = iTotal > g_iFullUserCount ? 3 : iTotal > g_iBusyUserCount ? 2 : 1;
DBPacket(HEADER_GD_UPDATE_CHANNELSTATUS, 0, &channelStatus, sizeof(channelStatus));
m_tLastChannelStatusUpdateTime = t;
}
}
void CLIENT_DESC::Reset()
{
// Backup connection target info
LPFDWATCH fdw = m_lpFdw;
std::string host = m_stHost;
WORD port = m_wPort;
Destroy();
Initialize();
// Restore connection target info
m_lpFdw = fdw;
m_stHost = host;
m_wPort = port;
InitializeBuffers();
}
void CLIENT_DESC::InitializeBuffers()
{
m_lpOutputBuffer = buffer_new(1024 * 1024);
m_lpInputBuffer = buffer_new(1024 * 1024);
m_iMinInputBufferLen = 1024 * 1024;
hier nochmal die geänderte Config natürlich hatte ich das bei allen durchgeführt.
TEST_SERVER: 0
HOSTNAME: game99
CHANNEL: 99
PORT: 13099
P2P_PORT: 14099
DB_PORT: 92378
DB_ADDR: localhost
MAP_ALLOW: 81 103 105 110 111 112 113 181 182 183 114 118 119 150
TABLE_POSTFIX:
PASSES_PER_SEC: 25
SAVE_EVENT_SECOND_CYCLE: 180
PING_EVENT_SECOND_CYCLE: 180
PLAYER_SQL: localhost core fliege player
COMMON_SQL: localhost core fliege common
LOG_SQL: localhost core fliege log
LOCALE_SERVICE: germany
#NO_PK: 1
VIEW_RANGE: 8000
CHECK_MULTIHACK: 0
MAX_LEVEL: 105
PUBLIC_IP: {meine ip}
|
Guten Abend
Suche nach:
Code:
strlcpy(p.szPublicIP, g_szPublicIP, sizeof(p.szPublicIP));
Ändern zu:
Code:
strlcpy(p.szPublicIP, "MEINE IP", sizeof(p.szPublicIP));
Gruß, Endless
|
|
|
10/16/2022, 19:35
|
#15
|
elite*gold: 0
Join Date: Sep 2022
Posts: 19
Received Thanks: 0
|
Moin Endless,
ich habe alles so weit ausgeführt und geändert, die Fritz habe ich kurz auf (Exposed Host) gesetzt, damit auch alles frei ist. Die desc_client.cpp habe ich mit deinem txt ersetzt und danach wieder compilen, aber ich komme immer noch nicht rein.
|
|
|
|
|
Similar Threads
|
nach char auswahl kick
09/11/2009 - Metin2 Private Server - 5 Replies
hallo leute da ich sonnst so mit sufu nix gefunden habe frage ich euch am soo
also habe die multi exe von downloader und wenn ich mich bei tianyun einlogge funst auch alles soweit bis zur char auswahl aber wenn ich char auswähle schickt der mich zur server auswahl zurück wer hat das prob noch und wer sogar ne lösung dagegen daNKE SCHONMA FÜR EURE HILFE
mfg opti
|
Nach Char auswahl Kick
07/23/2009 - Metin2 Private Server - 3 Replies
Immer wenn ich Mein main char auswähle bekomme ich ein kick
aber bei den andern chars nicht ... wodran liegt das ?
Und dann noch warum hab ich auf einmal wieder die sachen von ch1 auf ch2
obwohl ich auf ch2 ganz andere hatt :mad:
|
Kick nach der Char Auswahl o.O
07/05/2009 - Flyff Private Server - 4 Replies
Huhu epvpers ...
Sry falls es den Thread schon gibt ... hab ihn sonst nicht gefunden :)
Alsoo , nachdem ich meinen Char ausgewählt habe , lädt es und BOOOOM kickts mich und ich bin raus aus dem Spiel :D
Ich zocke auf einem E-Client V11 P-Server...
Danke für eure Hilfe,
euer ,
Ludolf :D
|
All times are GMT +2. The time now is 12:27.
|
|