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

Męczący bug większości serverów

Status
Not open for further replies.
Osobiscie na serwerze mam zabezpieczone w pewny dobry sposob wszelkie spamowanie czegokolwiek i przyznam ze mimo to mialem takiego jednego crasha (aczkolwiek nie wiem czy nie wystapil podczas chwilowego wylaczenia tego). W kazdym badz razie inwob wchodzil do mnie na serwer i probowal to robic i odziwo 'jakies limity masz' takze to moze byc sposob na przylagowanie serwera.
Niestety nie likwiduje to crashbuga który serwera nie laguje a natychmiast go wywala w kosmos bez gdb.
 
fixo ?
XML/groups.xml maxVips=20

Podziała, ale zauważ, że gdy robisz OTS na te 800 osób to liderzy pragną mieć swych 40-60 wrogów na VIP liście, dlatego polecam exhausted.
Na OpenTibię typu EVO(100 os.) - Fixo:
  • XML:
    <?xml version="1.0" encoding="UTF-8"?>
    <groups>
    	<group id="1" name="Player" maxVips="35"/>
    	<group id="2" name="Tutor" flags="16809984" customFlags="2" access="1"/>
    	<group id="3" name="Senior Tutor" flags="68736352256" customFlags="14" access="2" maxVips="200"/>
    	<group id="4" name="Gamemaster" flags="3808558964575" customFlags="257215" access="3" depotLimit="3000" maxVips="300" outfit="75"/>
    	<group id="5" name="Community Manager" flags="3840774348794" customFlags="781823" access="4" depotLimit="4000" maxVips="400" outfit="266"/>
    	<group id="6" name="God" flags="3845069447162" customFlags="50331647" access="5" depotLimit="5000" maxVips="500" outfit="302"/>
    </groups>
 
Podziała, ale zauważ, że gdy robisz OTS na te 800 osób to liderzy pragną mieć swych 40-60 wrogów na VIP liście, dlatego polecam exhausted.
Na OpenTibię typu EVO(100 os.) - Fixo:
  • XML:
    <?xml version="1.0" encoding="UTF-8"?>
    <groups>
    	<group id="1" name="Player" maxVips="35"/>
    	<group id="2" name="Tutor" flags="16809984" customFlags="2" access="1"/>
    	<group id="3" name="Senior Tutor" flags="68736352256" customFlags="14" access="2" maxVips="200"/>
    	<group id="4" name="Gamemaster" flags="3808558964575" customFlags="257215" access="3" depotLimit="3000" maxVips="300" outfit="75"/>
    	<group id="5" name="Community Manager" flags="3840774348794" customFlags="781823" access="4" depotLimit="4000" maxVips="400" outfit="266"/>
    	<group id="6" name="God" flags="3845069447162" customFlags="50331647" access="5" depotLimit="5000" maxVips="500" outfit="302"/>
    </groups>

Dodam ze tak samo jak sie je dodaje tak samo mozna je skasowac i dodac na nowo.
 
Osobiscie na serwerze mam zabezpieczone w pewny dobry sposob wszelkie spamowanie czegokolwiek i przyznam ze mimo to mialem takiego jednego crasha (aczkolwiek nie wiem czy nie wystapil podczas chwilowego wylaczenia tego). W kazdym badz razie inwob wchodzil do mnie na serwer i probowal to robic i odziwo 'jakies limity masz' takze to moze byc sposob na przylagowanie serwera.
Niestety nie likwiduje to crashbuga który serwera nie laguje a natychmiast go wywala w kosmos bez gdb.

W chuja leci, chce się zamaskować że to nie on =]
 
Dodam ze tak samo jak sie je dodaje tak samo mozna je skasowac i dodac na nowo.

No właśnie to miałem napisać, on nie dodawał nowych osób tylko pare osób dodawał jednocześnie usuwając --- auto 1 ~ pewnie stojąć w temple/depo, widząc tych na screenie, łatwo napisać takie coś do elfa.
 
W configu ustawiasz ilosc VIPow dla gracza free-account i pacc :]
 
pytanie o funkcje do elfbota dodawajac do vipa, bo sobie wyprintowalem sporo rzeczy w src, zna ktos?

Jakie funkcje? w elfbocie czy w source TFSa? Jak w ElfBocie to zapodaj na pw.

A co do tego moze tez uzywac jebanego taskera lub poprostu TibiaBotNG

EDIT. W ElfBocie nie ma funkcji $addvip enemy czy cos takiego podobnego
 
Chyba lepsza będzie edycja źródeł mordeczki. Skoro już ogarnęliście tego buga to macie i fix'a:
game.cpp
Code:
bool Game::playerRequestAddVip(uint32_t playerId, const std::string& vipName)
{
	Player* player = getPlayerByID(playerId);
	if(!player || player->isRemoved())
		return false;

	uint32_t guid;
	bool specialVip;
	
	std::string name = vipName;

	if(Condition* condition = Condition::createCondition(CONDITIONID_DEFAULT, CONDITION_EXHAUST, 3000, 0, false, 1))
	{
		player->addCondition(condition);
		player->sendTextMessage(MSG_STATUS_SMALL, "Please wait few seconds before adding new player to your vip list.");
		return false;
	}
	
	if(!IOLoginData::getInstance()->getGuidByNameEx(guid, specialVip, name))
	{
		player->sendTextMessage(MSG_STATUS_SMALL, "A player with that name does not exist.");
		return false;
	}

	if(specialVip && !player->hasFlag(PlayerFlag_SpecialVIP))
	{
		player->sendTextMessage(MSG_STATUS_SMALL, "You cannot add this player.");
		return false;
	}

	bool online = false;
	if(Player* target = getPlayerByName(name))
		online = player->canSeeCreature(target);

	return player->addVIP(guid, name, online);
}

bool Game::playerRequestRemoveVip(uint32_t playerId, uint32_t guid)
{
	Player* player = getPlayerByID(playerId);
	
	if(!player || player->isRemoved())
		return false;

	if(Condition* condition = Condition::createCondition(CONDITIONID_DEFAULT, CONDITION_EXHAUST, 3000, 0, false, 1))
	{
		player->addCondition(condition);
		player->sendTextMessage(MSG_STATUS_SMALL, "Please wait few seconds before deleting next player from your vip list.");
		return false;
	}
	
	player->removeVIP(guid);
	return true;
}
Nie testowane, ale powinno działać.
 
Last edited:
@GarQet
A moglbys po prostu powiedziec jak to samemu dodac - co pod czyms dodac itd... ? :p
 
Swoja droga, skad się wzieło takie dziwne zapytanie
Code:
SELECT `id`, `name` FROM `players` WHERE `name` = '??z&z?@??x?\0[B]name[/B]?\0rdx}r\0\0?\0\0\0\0\0\0\0\0\0\ 0\
jako że takie cos jest tylko w sprawdzaniu czy istnieje player (iologindata.cpp). Oczywiscie w name był prawidlowy nick gracza. Jakies idee ?;/
 
Code:
bool Game::playerRequestAddVip(uint32_t playerId, const std::string& vipName)
{
	Player* player = getPlayerByID(playerId);
	if(!player || player->isRemoved())
		return false;

	uint32_t guid;
	bool specialVip;
	
	std::string name = vipName;

	if(Condition* condition = Condition::createCondition(CONDITIONID_DEFAULT, CONDITION_EXHAUST, 3000, 0, false, 1))
	{
		player->addCondition(condition);
		player->sendTextMessage(MSG_STATUS_SMALL, "Please wait few seconds before adding new player to your vip list.");
		return false;
	}
	
	if(!IOLoginData::getInstance()->getGuidByNameEx(guid, specialVip, name))
	{
		player->sendTextMessage(MSG_STATUS_SMALL, "A player with that name does not exist.");
		return false;
	}

	if(specialVip && !player->hasFlag(PlayerFlag_SpecialVIP))
	{
		player->sendTextMessage(MSG_STATUS_SMALL, "You cannot add this player.");
		return false;
	}

	bool online = false;
	if(Player* target = getPlayerByName(name))
		online = player->canSeeCreature(target);

	return player->addVIP(guid, name, online);
}

bool Game::playerRequestRemoveVip(uint32_t playerId, uint32_t guid)
{
	Player* player = getPlayerByID(playerId);
	
	if(Condition* condition = Condition::createCondition(CONDITIONID_DEFAULT, CONDITION_EXHAUST, 3000, 0, false, 1))
	{
		player->addCondition(condition);
		player->sendTextMessage(MSG_STATUS_SMALL, "Please wait few seconds before deleting next player from your vip list.");
		return false;
	}
	
	if(!player || player->isRemoved())
		return false;

	player->removeVIP(guid);
	return true;
}

to jeszcze z poprawkami jezykowymi
 
swoja droga lepiej zrobić osobny exhaused na rózne inne rzeczy (cos like antypush), a nie używać tych czarówych czy actionowych co wykluczy w przyszlosci ew skrajne przypadki dodania gracza i brak mozliwosci ataku/oborny siebie/przeciwnika przez tą chwile.
 
Chyba lepsza będzie edycja źródeł mordeczki. Skoro już ogarnęliście tego buga to macie i fix'a:
game.cpp
Code:
bool Game::playerRequestAddVip(uint32_t playerId, const std::string& vipName)
{
	Player* player = getPlayerByID(playerId);
	if(!player || player->isRemoved())
		return false;

	uint32_t guid;
	bool specialVip;
	
	std::string name = vipName;

	if(Condition* condition = Condition::createCondition(CONDITIONID_DEFAULT, CONDITION_EXHAUST, 3000, 0, false, 1))
	{
		player->addCondition(condition);
		player->sendTextMessage(MSG_STATUS_SMALL, "Please wait few seconds before adding new player to your vip list.");
		return false;
	}
	
	if(!IOLoginData::getInstance()->getGuidByNameEx(guid, specialVip, name))
	{
		player->sendTextMessage(MSG_STATUS_SMALL, "A player with that name does not exist.");
		return false;
	}

	if(specialVip && !player->hasFlag(PlayerFlag_SpecialVIP))
	{
		player->sendTextMessage(MSG_STATUS_SMALL, "You cannot add this player.");
		return false;
	}

	bool online = false;
	if(Player* target = getPlayerByName(name))
		online = player->canSeeCreature(target);

	return player->addVIP(guid, name, online);
}

bool Game::playerRequestRemoveVip(uint32_t playerId, uint32_t guid)
{
	Player* player = getPlayerByID(playerId);
	
	if(!player || player->isRemoved())
		return false;

	if(Condition* condition = Condition::createCondition(CONDITIONID_DEFAULT, CONDITION_EXHAUST, 3000, 0, false, 1))
	{
		player->addCondition(condition);
		player->sendTextMessage(MSG_STATUS_SMALL, "Please wait few seconds before deleting next player from your vip list.");
		return false;
	}
	
	player->removeVIP(guid);
	return true;
}
Nie testowane, ale powinno działać.

Mój fix wygląda mniej więcej tak samo. ;)
Skorzystajcie z tego, bo to najlepsze rozwiązanie. Właśnie edycja pliku źródłowego game.cpp!
 
A ja właśnie kończę pisać do tego aplikację konsolową ;d fajny tool z tego będzie xd
 
Jestem podwrazeniem ktos w koncu zaczal pomagac a nie zgrywac cwaniaka. Ogolnie to naprawde ciekawe bledy moze backdorry w tfsie sie pojawiaja.

przydaloby sie umiescic fixa w c++ codes :)
 
Last edited:
Status
Not open for further replies.
Back
Top