[Release]GM Online Liste per Source

08/28/2015 11:43 thespeedyy#16
geht mir auch so :o
08/30/2015 22:07 HsNecro#17
Guys, ii show me online GM only on on that GM, other players see GM off. Any help? :D Thank you
08/31/2015 00:45 thespeedyy#18
PUUUSH!
1 IntelliSense: Zu wenig Argumente für "Klassenvorlage "std::map"". c:\Server\client_source_clean\source\UserInterface \PythonMessenger.h 8

Fehler 2 error C2976: "std::map": Nicht genügend template-Argumente. c:\server\client_source_clean\source\userinterface \PythonMessenger.h 8
08/31/2015 02:58 .K0rí#19
So guten morgen/abend wie man es sehen mag,

Erstmal Screen von der Ganzen Sache:

[Only registered and activated users can see links. Click Here To Register...]


Kommen wir zu dem einbau, da einige sich etwas schwer tun, sorry Speedy ich meine dich :awesome:

Ich werde nur den Clientpart erklären weil bei dem Serverpart bin ich der meinung ist gut erklärt und sollte auch jeder hinnbekommen.

Also fangen wir mal an:

Ihr öffnet die "PythonNetworkSteamPhaseGame.cpp" und sucht nach:

Code:
if (on.connected & MESSENGER_CONNECTED_STATE_ONLINE)
und ersezt es komplett mit dem hier:

Code:
if (on.connected & MESSENGER_CONNECTED_STATE_ONLINE)
				{
					if (char_name[0] == '[')
					{
						CPythonMessenger::Instance().OnGamemasterLogin(char_name);
					}
					else
					{
						CPythonMessenger::Instance().OnFriendLogin(char_name);
					}
				}
				else
				{
					if (char_name[0] == '[')
					{
						CPythonMessenger::Instance().OnGamemasterLogout(char_name);
					}
					else
					{
						CPythonMessenger::Instance().OnFriendLogout(char_name);
					}
				}
Sollte so Aussehen:
[Only registered and activated users can see links. Click Here To Register...]

nun in der gleichen Datei sucht ihr:

Code:
case MESSENGER_SUBHEADER_GC_LOGIN:
und sezt unter:
Code:
CPythonMessenger::Instance().OnFriendLogin(char_name);
das hier:

Code:
if (char_name[0] == '[')
			{
				CPythonMessenger::Instance().OnGamemasterLogin(char_name);
			}
			else
			{
				CPythonMessenger::Instance().OnFriendLogin(char_name);
			}
das gleiche bei :

Code:
case MESSENGER_SUBHEADER_GC_LOGOUT:
da unter:
Code:
CPythonMessenger::Instance().OnFriendLogout(char_name);
das hier:

Code:
if (char_name[0] == '[')
			{
				CPythonMessenger::Instance().OnGamemasterLogout(char_name);
			}
			else
			{
				CPythonMessenger::Instance().OnFriendLogout(char_name);
			}

Sollte so aussehen:

[Only registered and activated users can see links. Click Here To Register...]

Da ihr es 2x machen müsst habe ich es gleich auf einen Screen gepackt.



So nun gehen wir in die PythonMessenger.cpp und suchen:

Code:
void CPythonMessenger::OnFriendLogout(const char * c_szKey)

darunter schreiben wir das:

Code:
void CPythonMessenger::OnGamemasterLogin(const char * c_szKey/*, const char * c_szName*/)
{
	m_GamemasterNameMap.insert(c_szKey);

	if (m_poMessengerHandler)
		PyCallClassMemberFunc(m_poMessengerHandler, "OnLogin", Py_BuildValue("(is)", MESSENGER_GRUOP_INDEX_GM, c_szKey));
}

void CPythonMessenger::OnGamemasterLogout(const char * c_szKey)
{
	m_GamemasterNameMap.insert(c_szKey);

	if (m_poMessengerHandler)
		PyCallClassMemberFunc(m_poMessengerHandler, "OnLogout", Py_BuildValue("(is)", MESSENGER_GRUOP_INDEX_GM, c_szKey));
}
Sollte so aussehen:
[Only registered and activated users can see links. Click Here To Register...]


nun gehen wir in die PythonMessnger.h, und suchen:

Code:
MESSENGER_GRUOP_INDEX_GUILD,
darunter das hier:
Code:
MESSENGER_GRUOP_INDEX_GM,
Screen:
[Only registered and activated users can see links. Click Here To Register...]

Unter dem hier:
Code:
void OnFriendLogout(const char * c_szKey);
fügt ihr das hier ein:
Code:
void OnGamemasterLogin(const char * c_szKey);
		void OnGamemasterLogout(const char * c_szKey);
Screen:
[Only registered and activated users can see links. Click Here To Register...]

Nun sucht ihr:
Code:
TGuildMemberStateMap m_GuildMemberStateMap;
darunter fügt ihr das ein:
Code:
TGamemasterNameMap m_GamemasterNameMap;
Schaut dann so aus:
[Only registered and activated users can see links. Click Here To Register...]

als leztes sucht ihr:

Code:
typedef std::map<std::string, BYTE> TGuildMemberStateMap;
und fügt das ein:
Code:
typedef std::set<std::string> TGamemasterNameMap;
Schaut so aus:
[Only registered and activated users can see links. Click Here To Register...]


Das wars und es solte jezt alles klappen


.Kori
08/31/2015 06:37 thespeedyy#20
ernst?... das es wegen NUR wegen dem set kommt? ich fühle mich verarscht... trotzdem danke .kori
09/03/2015 17:20 HsNecro#21
Guys, i have little problem after login, all friends in list are removed, any solution?
09/10/2015 08:59 Bekir Akdemir#22
lag ?
10/07/2015 10:03 -!Kontra!-#23
Irgentwie hab ich das Problem das die normale freundesliste genau so behandelt wird wie die Teamliste. Sprich, in der Freundesliste sind auch nur Teamler drinne. Die Teamliste scheint jedoch zu funktionieren.. irgentwas hab ich mir da verbaut.. könnt vlt jmd helfen :)
10/07/2015 10:04 Kampfzwerg!#24
schönes Release
jetzt kann sich kein teamler mehr verstecken!

schöne grüße

Kampfzwerg
10/08/2015 16:42 L&A Graphic#25
Good. I use it. thanks!
10/09/2015 20:45 Drαεth#26
Sauber.
Funktioniert! :)
Danke.
02/18/2016 19:45 oceanusPT#27
Quote:
Originally Posted by .K0rí View Post
So guten morgen/abend wie man es sehen mag,

Erstmal Screen von der Ganzen Sache:

[Only registered and activated users can see links. Click Here To Register...]


Kommen wir zu dem einbau, da einige sich etwas schwer tun, sorry Speedy ich meine dich :awesome:

Ich werde nur den Clientpart erklären weil bei dem Serverpart bin ich der meinung ist gut erklärt und sollte auch jeder hinnbekommen.

Also fangen wir mal an:

Ihr öffnet die "PythonNetworkSteamPhaseGame.cpp" und sucht nach:

Code:
if (on.connected & MESSENGER_CONNECTED_STATE_ONLINE)
und ersezt es komplett mit dem hier:

Code:
if (on.connected & MESSENGER_CONNECTED_STATE_ONLINE)
				{
					if (char_name[0] == '[')
					{
						CPythonMessenger::Instance().OnGamemasterLogin(char_name);
					}
					else
					{
						CPythonMessenger::Instance().OnFriendLogin(char_name);
					}
				}
				else
				{
					if (char_name[0] == '[')
					{
						CPythonMessenger::Instance().OnGamemasterLogout(char_name);
					}
					else
					{
						CPythonMessenger::Instance().OnFriendLogout(char_name);
					}
				}
Sollte so Aussehen:
[Only registered and activated users can see links. Click Here To Register...]

nun in der gleichen Datei sucht ihr:

Code:
case MESSENGER_SUBHEADER_GC_LOGIN:
und sezt unter:
Code:
CPythonMessenger::Instance().OnFriendLogin(char_name);
das hier:

Code:
if (char_name[0] == '[')
			{
				CPythonMessenger::Instance().OnGamemasterLogin(char_name);
			}
			else
			{
				CPythonMessenger::Instance().OnFriendLogin(char_name);
			}
das gleiche bei :

Code:
case MESSENGER_SUBHEADER_GC_LOGOUT:
da unter:
Code:
CPythonMessenger::Instance().OnFriendLogout(char_name);
das hier:

Code:
if (char_name[0] == '[')
			{
				CPythonMessenger::Instance().OnGamemasterLogout(char_name);
			}
			else
			{
				CPythonMessenger::Instance().OnFriendLogout(char_name);
			}

Sollte so aussehen:

[Only registered and activated users can see links. Click Here To Register...]

Da ihr es 2x machen müsst habe ich es gleich auf einen Screen gepackt.



So nun gehen wir in die PythonMessenger.cpp und suchen:

Code:
void CPythonMessenger::OnFriendLogout(const char * c_szKey)

darunter schreiben wir das:

Code:
void CPythonMessenger::OnGamemasterLogin(const char * c_szKey/*, const char * c_szName*/)
{
	m_GamemasterNameMap.insert(c_szKey);

	if (m_poMessengerHandler)
		PyCallClassMemberFunc(m_poMessengerHandler, "OnLogin", Py_BuildValue("(is)", MESSENGER_GRUOP_INDEX_GM, c_szKey));
}

void CPythonMessenger::OnGamemasterLogout(const char * c_szKey)
{
	m_GamemasterNameMap.insert(c_szKey);

	if (m_poMessengerHandler)
		PyCallClassMemberFunc(m_poMessengerHandler, "OnLogout", Py_BuildValue("(is)", MESSENGER_GRUOP_INDEX_GM, c_szKey));
}
Sollte so aussehen:
[Only registered and activated users can see links. Click Here To Register...]


nun gehen wir in die PythonMessnger.h, und suchen:

Code:
MESSENGER_GRUOP_INDEX_GUILD,
darunter das hier:
Code:
MESSENGER_GRUOP_INDEX_GM,
Screen:
[Only registered and activated users can see links. Click Here To Register...]

Unter dem hier:
Code:
void OnFriendLogout(const char * c_szKey);
fügt ihr das hier ein:
Code:
void OnGamemasterLogin(const char * c_szKey);
		void OnGamemasterLogout(const char * c_szKey);
Screen:
[Only registered and activated users can see links. Click Here To Register...]

Nun sucht ihr:
Code:
TGuildMemberStateMap m_GuildMemberStateMap;
darunter fügt ihr das ein:
Code:
TGamemasterNameMap m_GamemasterNameMap;
Schaut dann so aus:
[Only registered and activated users can see links. Click Here To Register...]

als leztes sucht ihr:

Code:
typedef std::map<std::string, BYTE> TGuildMemberStateMap;
und fügt das ein:
Code:
typedef std::set<std::string> TGamemasterNameMap;
Schaut so aus:
[Only registered and activated users can see links. Click Here To Register...]


Das wars und es solte jezt alles klappen


.Kori

How can i add a return on GM with name XPTO? is that possible?
if GM XPTO login\logout he dont apear at in the list. no on know he is or was online.
07/09/2016 14:55 iPeri /..#28
Falls ihr Kori's HowTo gefolgt seid Clientside muss ich Kori leider berichtigen!

Da man sich sonst selbst in der Freundesliste hat / Wenn ein GM auf der gleichen Map ist, wie ein Spieler dieser nicht nur in der GM-Liste sondern auch in der Freundesliste sind.

Die Funktionen:
MESSENGER_SUBHEADER_GC_LOGIN
&
MESSENGER_SUBHEADER_GC_LOGOUT

haben wie folgt auszusehen:

MESSENGER_SUBHEADER_GC_LOGIN:
[Only registered and activated users can see links. Click Here To Register...]

MESSENGER_SUBHEADER_GC_LOGOUT:
[Only registered and activated users can see links. Click Here To Register...]
09/03/2017 18:15 DasSchwarzeT#29
Code:
void MessengerManager::Login(MessengerManager::keyA account)
{
	if (m_set_loginAccount.find(account) != m_set_loginAccount.end()) {
		return;
	}

	DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&MessengerManager::LoadList), this),
			"SELECT account, companion FROM messenger_list%s WHERE account='%s'", get_table_postfix(), account.c_str());	
	
	DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&MessengerManager::LoadList), this),
			"SELECT '%s' as account, mName as companion FROM common.gmlist", account.c_str());
Das statt der im Thread beschriebenen Login Methode nutzen und alles läuft ohne Probleme
09/07/2017 02:01 Chaosnightx3#30
Quote:
Originally Posted by DasSchwarzeT View Post
Code:
void MessengerManager::Login(MessengerManager::keyA account)
{
	if (m_set_loginAccount.find(account) != m_set_loginAccount.end()) {
		return;
	}

	DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&MessengerManager::LoadList), this),
			"SELECT account, companion FROM messenger_list%s WHERE account='%s'", get_table_postfix(), account.c_str());	
	
	DBManager::instance().FuncQuery(std::bind1st(std::mem_fun(&MessengerManager::LoadList), this),
			"SELECT '%s' as account, mName as companion FROM common.gmlist", account.c_str());
Das statt der im Thread beschriebenen Login Methode nutzen und alles läuft ohne Probleme
Scheint soweit zu funktionieren, bis auf zwei Punkte:
Spieler können Admins ne FA senden.
Die Freundesliste wird nicht gespeichert?