• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!
  • 2026 staff recruitment is open! Check it out and consider applying!

[c++] Zlecę za $$

@up
Jednak w swoim pierwszym poscie zaznaczylem prawo do omylki, poniewaz robilem to naszybko, drogi Chojraku.
Ale masz racje, czyli wg Ciebie powinnismy poprostu zmodyfikowac funkcje getPlayersOnline w nastepujacy sposob:
Code:
uint32_t getPlayersOnline() {return 0;}
Czy tak?
Jednak dalej nie rozumiem z jakiego powodu nasz drogi przyjaciel Nemaneth nazwal mnie idiota moze mi to ktos rozrysowac?
@edit istnieje rozwniez szansa, ze po takiej modyfikacji komenda !online dzialac nie bedzie.

Bo ten Twoj plan modyfikacji nadal jest bledny, heh.
 
Code:
uint32_t getPlayersOnline() {return (uint32_t) 0;}
Moze sie przy tobie czegos naucze :)
 
Try again.

Masz:
chbfuo4jvywozqiudwsn.png
 
zobacz /serverdiag, wydaje mi się, że tam są rozróżnione
No są, racja. Jest players online i active connections(ProtocolGame), ale jak to wszystko zrobić tak, aby pokazywało w statusie na stronie oraz na ots listach jedynie te active connections?
 
Po co chcesz tak zrobic ? po 1 minucie wywala goscia jak nie ma pz a jak ma to po 15 jak jest na x-logu jezeli dobrze pamietam czyz nie ?
 
Po to, że graczom ten x log odpowiada, ale za to są bany na listach.
 
Nie o to chodzi, chodzi o pole anti logout na trainerach.
 
To znaczy w czym? Po prostu nie chcę, aby wyświetlało mi listę graczy, ale listę aktywnych połączeń. Wtedy nie będzie spoofu, a gracze będą usatysfakcjonowani.
 
po prostu sprawdź co jest tam
Code:
<talkaction log="yes" words="/serverdiag" access="5" event="function" value="diagnostics"/>
i to w statusie przesyłaj jako players
 
Hm a jakbym w status.cpp wszystko z g_game.getPlayersOnline() pozamieniał na Connection::connectionCount?
 
tak właśnie jestem w tym miejscu

a możesz dać przykład jak to wyświetla /serverdiag ( connection, players ) w takich przypadku jak ty masz.

#EIDT
Trochę poczytałem tego kodu z nudów i takie coś mi wyszło:

do list
w status.cpp zmienić:
Code:
if(requestedInfo & REQUEST_PLAYERS_INFO)
	{
		output->put<char>(0x20);
		output->put<uint32_t>(g_game.getPlayersOnline());
na
Code:
if(requestedInfo & REQUEST_PLAYERS_INFO)
	{
		output->put<char>(0x20);
		output->put<uint32_t>(Connection::connectionCount);

a co do osób na www to takie coś wykombinowałem (nie testowane, tyle ze się kompiluje :D)

w player.cpp
Code:
if((timeNow - lastPong) >= 60000 && !isConnecting && !pzLocked && !getTile()->hasFlag(TILESTATE_NOLOGOUT)) 
	{
		if(client)
			client->logout(true, true);
		else if(g_creatureEvents->playerLogout(this, false))
			g_game.removeCreature(this, true);
	}
nad tym dodać
Code:
if((timeNow - lastPong) >= 60000 && !isConnecting && !pzLocked && !getTile()->hasFlag(TILESTATE_NOLOGOUT))
		IOLoginData::getInstance()->updateOnlineStatus(this->getGUID(), true);

Czyli moją ideą było to, żeby po prostu zmienił się w bazie online z 1 na 0 po minucie, ale nie wywalało gracza.
 
Last edited:
Back
Top